2014-05-23 44 views
-1

我在這個例子中的Ruby語法亂說

require 'blather/client/dsl' 

module App 
    extend Blather::DSL 

    def self.run 
    EM.run { client.run } 
    end 

    setup '[email protected]', 'echo' 

    # Auto approve subscription requests 
    subscription :request? do |s| 
    write_to_stream s.approve! 
    end 

    # Echo back what was said 
    message :chat?, :body do |m| 
    write_to_stream m.reply 
    end 
end 

trap(:INT) { EM.stop } 
trap(:TERM) { EM.stop } 

App.run 

我理解這個代碼,但EM內的一切考慮看看。引用。例如,在self.run中,EM.run指的是什麼?它似乎需要一個塊,但我找不到任何EM的參考。

我得到了代碼的功能,但我找不到任何文檔或者這是一個ruby功能/ blather功能。

+0

這是EventMachine – zishe

+0

這似乎確實如此。萬分感謝。你是否能夠把它看作是一個依賴項或者在blather文檔中的某個地方? – Colt

+0

那麼,答案告訴你這個?這是我的更長的版本。 – zishe

回答

1

EM是一類。我會假設它代表EventMachine,因爲blather使用它,但我不能100%確定。

+0

你幾乎是正確的。 'EM'是一個模塊。我在Github中找到了它。 https://github.com/eventmachine/eventmachine/blob/dd675e4d061785cfe8240cd98e4c7525cd6fdae5/lib/eventmachine.rb#L1535 https://github.com/eventmachine/eventmachine/blob/dd675e4d061785cfe8240cd98e4c7525cd6fdae5/lib/eventmachine.rb#L72 –