2010-11-21 97 views

回答

6

坐落在一個配置塊的全局變量:

configure do 
    $mongo = Mongo::Connection.new 
end 
settings

或堅持下去:

configure do 
    set :mongo, Mongo::Connection.new 
end 

get '/' do 
    # the connection is available through settings.mongo 
end 

我必須說,我覺得這些都不很優雅。

開發中可能看起來好像每個請求上都創建了連接,但在生產中啓動服務器時,您會看到它的行爲不同(例如,thin -e production)。

另外,如果您的應用程序將在客運運行,你需要做的是:

configure do 
    if defined?(PhusionPassenger) 
    PhusionPassenger.on_event(:starting_worker_process) do |forked| 
     if forked 
     # *** reconnect to the database here! *** 
     end 
    end 
    end 
end 

它所做的是,它重新連接到客運叉後的數據庫,這樣子進程都有自己的連接。不這樣做會給你真正奇怪的錯誤。