我正在使用Mongoid 3,使用Rails 3.2.9和Unicorn进行制作。想设置一个before_fork& after_fork用于连接到mongodb,找到以下代码用于活动记录:
before_fork do |server, worker|
# Replace with MongoDB or whatever
if defined?(ActiveRecord::Base)
ActiveRecord::Base.connection.disconnect!
Rails.logger.info('Disconnected from ActiveRecord')
end
end
after_fork do |server, worker|
# Replace with MongoDB or whatever
if defined?(ActiveRecord::Base)
ActiveRecord::Base.establish_connection
Rails.logger.info('Connected to ActiveRecord')
end
end
Mongoid的相关代码是什么(连接和断开连接)?
更新
你实际上并不需要这样做,所以对于想要查看这个问题的人来说,请看:
http://mongoid.org/en/mongoid/docs/rails.html
“独角兽和乘客
当使用Unicorn或Passenger时,每次在使用app预加载或智能生成时分叉子进程时,Mongoid将自动重新连接到master数据库。如果您手动在应用程序中执行此操作,则可以删除代码。“
虽然知道什么是等效的Mongoid代码仍然很有趣。
答案 0 :(得分:19)
你实际上并不需要这样做,所以对于想要查看这个问题的人来说,请看:
http://mongoid.org/en/mongoid/docs/rails.html
"独角兽和乘客
当使用Unicorn或Passenger时,每次在使用app预加载或智能生成时分叉子进程时,Mongoid将自动重新连接到master数据库。如果您手动在应用程序中执行此操作,则可以删除代码。"
虽然知道什么是等效的Mongoid代码仍然很有趣。
答案 1 :(得分:0)
怎么样?
::Mongoid.default_session.connect
::Mongoid.default_session.disconnect
答案 2 :(得分:0)
https://docs.mongodb.com/mongoid/current/tutorials/mongoid-configuration/#usage-with-forking-servers
mongodb.com上的文档说,独角兽或乘客需要after_fork和before_fork。
这可能最近改变了。这是7.0版的Mongoid文档