jam*_*mur 4 ruby sinatra mongodb
使用ruby mongodb驱动程序,有没有办法在configure块中创建一个可以在路由方法中访问的连接对象,这样我就不必在每个请求上重新创建连接?
在配置块中设置全局变量:
configure do
$mongo = Mongo::Connection.new
end
Run Code Online (Sandbox Code Playgroud)
或坚持settings:
configure do
set :mongo, Mongo::Connection.new
end
get '/' do
# the connection is available through settings.mongo
end
Run Code Online (Sandbox Code Playgroud)
我必须说,我发现这些都不是很优雅.
开发时可能看起来好像是在每个请求上创建连接,但是在生产中启动服务器,您将看到它的行为不同(例如,thin -e production).
此外,如果您的应用程序将在Passenger下运行,则需要执行以下操作:
configure do
if defined?(PhusionPassenger)
PhusionPassenger.on_event(:starting_worker_process) do |forked|
if forked
# *** reconnect to the database here! ***
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
它的作用是它在Passenger分支之后重新连接到数据库,因此子进程有自己的连接.不这样做会给你带来非常奇怪的错误.
| 归档时间: |
|
| 查看次数: |
998 次 |
| 最近记录: |