4
使用ruby mongodb驅動程序,是否有一種方法可以在配置塊中創建連接對象,並且可以在路由方法中訪問這些連接對象,以便我不必在每個請求上重新創建連接?如何在Sinatra中創建一個全局連接對象mongodb?
使用ruby mongodb驅動程序,是否有一種方法可以在配置塊中創建連接對象,並且可以在路由方法中訪問這些連接對象,以便我不必在每個請求上重新創建連接?如何在Sinatra中創建一個全局連接對象mongodb?
坐落在一個配置塊的全局變量:
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
它所做的是,它重新連接到客運叉後的數據庫,這樣子進程都有自己的連接。不這樣做會給你真正奇怪的錯誤。