2012-01-27 3 views
2

Я написал простой сервер EventMachine как этот:Запуск EventMachine из другого файла

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

Теперь я хотел бы, чтобы вызвать его из другого файла в другой каталог. Если EventMachine будет простой класс Рубин Я хотел бы добавить (или что-то) метод класса run и сделать что-то вроде:

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

Любая идея, как это сделать? Благодаря!

+0

ли баш вариант? Вы всегда можете назвать это от bash. Это не самое элегантное решение, но оно работает хорошо. – omninonsense

+0

Спасибо, вот что я сейчас использую. Я разорваюсь, но я ищу решение Ruby. – Cimm

+1

Какая у вас проблема, обертывая ваш код EventMachine.run внутри пользовательского класса MyEventMachine.run' и вызывая его из другого рубинового файла? Просто пытаюсь понять вашу проблему. –

ответ

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

+1

Еще одна вещь, которую стоит отметить, это то, что EM.run просто выполнит данный блок, если реактор уже работает, не делая ничего другого, что очень удобно при реализации библиотек или многоразового кода. – Schmurfy

Смежные вопросы