2012-01-27 88 views
2

EventMachine的開始我寫了一個簡單EventMachine的服務器像這樣的:現在從另一個文件

EventMachine.run do 
    EventMachine::WebSocket.start(:host => HOST, :port => PORT) do |ws| 
    # snip... 
    end 
end 

,我想從另一個目錄中的另一個文件觸發它。如果EventMachine的將是一個簡單的Ruby類我想補充一個run(或東西)類的方法,做一些事情,如:

#!/usr/bin/env ruby 
$LOAD_PATH << "./lib" 
require "my_event_machine" 
MyEventMachine.run 

任何想法如何做到這一點?謝謝!

+0

是bash的一個選擇嗎?你總是可以從bash中調用它。這不是最優雅的解決方案,但它運作良好。 – omninonsense 2012-01-28 22:48:39

+0

謝謝,這就是我現在使用的。我掏腰包,但我正在尋找一個Ruby解決方案。 – Cimm 2012-01-29 16:18:38

+1

你有什麼問題通過包裝定製類'MyEventMachine.run'裏面你'EventMachine.run'代碼,並從另一ruby文件調用它?試圖瞭解你的問題。 – 2012-01-31 13:00:52

回答

3

您已經有了解決方案:

my_app.rb:

class MyApp 
    def run 
    EM.run do 
     EM::WebSocket.start(:host => HOST, :port => PORT) do |ws| 
     # snip... 
     end 
    end 
    end 
end 

run.rb:

#!/usr/bin/env ruby 
$LOAD_PATH << "./lib" 
require "my_app" 
MyApp.new.run 
+0

謝謝,我很接近,但沒有足夠接近看到解決方案。 :) – Cimm 2012-02-15 15:05:06

+1

另一個值得注意的事情是,EM.run只是執行給定塊,如果反應堆已經沒有做別的實施庫或可重用的代碼時,這是非常方便的運行。 – Schmurfy 2012-02-15 15:34:34