31

我正在使用 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 都会自动重新连接到主数据库。如果您在应用程序中手动执行此操作,则可以删除您的代码。”

虽然知道什么是等效的 Mongoid 代码仍然很有趣。

4

3 回答 3

19

您实际上不需要这样做,因此对于查看此问题的人,请参阅:

http://mongoid.org/en/mongoid/docs/rails.html

“独角兽与乘客

在使用 Unicorn 或Passenger 时,每次使用app 预加载或智能生成时分叉子进程时,Mongoid 都会自动重新连接到主数据库。如果您在应用程序中手动执行此操作,则可以删除您的代码。”

虽然知道什么是等效的 Mongoid 代码仍然很有趣。

于 2013-03-20T08:02:25.833 回答
0

关于什么 ::Mongoid.default_session.connect ::Mongoid.default_session.disconnect

于 2015-11-24T10:00:22.097 回答
0

https://docs.mongodb.com/mongoid/current/tutorials/mongoid-configuration/#usage-with-forking-servers

mongodb.com 上的文档说,独角兽或乘客的 after_fork 和 before_fork 是必需的。

这可能最近发生了变化。这是 7.0 mongoid 文档

于 2019-07-10T03:03:11.113 回答