Rails,Mongoid& Heroku的独角兽配置

时间:2013-02-27 12:14:53

标签: ruby-on-rails mongodb heroku mongoid unicorn

我正在使用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代码仍然很有趣。

3 个答案:

答案 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文档