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
它所做的是,它重新连接到客运叉后的数据库,这样子进程都有自己的连接。不这样做会给你真正奇怪的错误。