加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 如何在Sinatra中创建mongodb的全局连接对象?

发布时间:2020-12-17 02:59:17 所属栏目:百科 来源:网络整理
导读:使用 ruby mongodb驱动程序,有没有办法在configure块中创建一个可以在路由方法中访问的连接对象,这样我就不必在每个请求上重新创建连接? 解决方法 在配置块中设置全局变量: configure do $mongo = Mongo::Connection.newend 或将其粘贴在设置中: configur
使用 ruby mongodb驱动程序,有没有办法在configure块中创建一个可以在路由方法中访问的连接对象,这样我就不必在每个请求上重新创建连接?

解决方法

在配置块中设置全局变量:

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

或将其粘贴在设置中:

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

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

我必须说,我发现这些都不是很优雅.

在开发中看起来好像连接是在每个请求上创建的,但是在生产中启动服务器并且您将看到它的行为不同(例如,瘦-e生产).

此外,如果您的应用程序将在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

它的作用是它在Passenger分支之后重新连接到数据库,因此子进程有自己的连接.不这样做会给你带来非常奇怪的错误.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读