2012-01-27 39 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

相关问题