2011-10-16 56 views
0

給出以下示例,如何將Botsy配置塊拆分爲多個文件?如何將配置塊拆分爲多個文件?

這是一個Campfire bot,它變得越來越複雜;我想更好地組織代碼。例如,我希望將其配置分割爲諸如「聊天」,「命令」等文件或模塊,而僅實例化單個Bot。

Botsy::Bot.new(campfire["subdomain"], campfire["token"], campfire["room"]) do 

    hear(/.*(going down|happening|news|up to)\?/i) do |data| 
    say "I caught my first tube today." 
    end 

    #...lots more configuration 

end 

回答

0

我想,如果您分配Botsy的新實例::博特一些類的常量或實例變量,你就可以使用,以後再定義更多的配置。

MYBOT = Botsy::Bot.new(campfire["subdomain"], campfire["token"], campfire["room"]) do 

    hear(/.*(going down|happening|news|up to)\?/i) do |data| 
    say "I caught my first tube today." 
    end 

    # ... 
end 

#### 
# Different file which is evaluated before the bot is set listening 

MYBOT.hear(/hello world/) do |data| 
    say "Hello, humans!" 
end 

查看原文。 https://github.com/seejohnrun/botsy/blob/master/lib/botsy.rb

+0

感謝丹。 Botsy在初始化過程中開始監聽,我不知道如何在開始監聽之前評估不同的命令文件,但是在初始化過程中。困惑!例如。在你的例子中,你在哪裏以及如何評估不同的文件? – zefer

+0

啊哈,我已經用配置塊中的'instance_eval(File.read('./ commands.rb'))'實現了它。 – zefer

+0

是的,我對這個項目並不熟悉(不確定是否真的需要在偵聽之前設置它),但它看起來像是在正確的軌道上。 –

0

解決了:

Botsy::Bot.new(campfire["subdomain"], campfire["token"], campfire["room"]) do 

    instance_eval File.read('./banter.rb') 
    instance_eval File.read('./commands.rb') 

end 

其中banter.rb包含如下:

hear(/.*(going down|happening|news|up to)\?/i) do |data| 
    say "I caught my first tube today." 
end 
相關問題