2011-07-05 22 views
1

是否可以在不使用額外初始化的情況下使用Thin內部的EventMachine調用?可能在瘦webapp中使用EM調用?

目前,我有一個由Thin(它作爲服務運行)運行的Sinatra應用程序。當我嘗試使用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 

回答

4

我的猜測(對不起,沒有em安裝在這個盒子上)是問題是因爲代碼將在加載類時被評估。在那一點上,很可能沒有設置,EM可能沒有初始化。

您可以嘗試在EM.next_tick {}中包裝$ sock = ...調用,這會延遲執行,直到EM實際啓動。

我相信,如果內存服務,你可以添加東西next_tick EM實際初始化之前。