Можно ли использовать вызовы EM в тонком веб-приложении? - PullRequest
1 голос
/ 05 июля 2011

Можно ли использовать вызовы EventMachine внутри Thin без дополнительной инициализации?

В настоящее время у меня есть приложение Sinatra, запущенное Thin (которое работает как служба). Когда я пытаюсь использовать EventMachine.connect_unix_domain, я получаю eventmachine not initialized ... даже если запущен Thin (и предположительно EventMachine).

class App < Sinatra::Base
  $sock = EventMachine.connect_unix_domain("/tmp/appsock.sock")
  # import all routes
  Dir.glob("controllers/*.rb").each { |r| require_relative r }
end

1 Ответ

4 голосов
/ 23 августа 2011

Полагаю (извините, у меня не установлено em в этом окне), проблема в том, что код будет оцениваться при загрузке класса.В этот момент thin, вероятно, не настроен, а EM, вероятно, не инициализирован.

Вы можете попробовать обернуть вызов $ sock = ... в EM.next_tick {}, который должен отложить выполнение до EMфактически начался.

Я полагаю, если память будет работать, вы можете добавить что-то в next_tick до инициализации EM.

...