Heroku 的 Rails、Mongoid 和 Unicorn 配置
Posted
技术标签:
【中文标题】Heroku 的 Rails、Mongoid 和 Unicorn 配置【英文标题】:Rails, Mongoid & Unicorn config for Heroku 【发布时间】:2013-02-13 05:58:28 【问题描述】:我正在使用 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 时,每次在使用应用预加载或智能生成时分叉子进程时,Mongoid 都会自动重新连接到主数据库。如果您在应用程序中手动执行此操作,则可以删除您的代码。”
虽然知道什么是等效的 Mongoid 代码仍然很有趣。
【问题讨论】:
你应该把你的更新放在下面的答案中并接受它:) mongoid 链接坏了,但这个仍然存在:mongoid.github.io/old/en/mongoid/docs/rails.html(我无法编辑答案,所以我把它放在评论中) 【参考方案1】:您实际上不需要这样做,因此对于查看此问题的人,请参阅:
http://mongoid.org/en/mongoid/docs/rails.html
“独角兽与乘客
在使用 Unicorn 或Passenger 时,每次在使用应用预加载或智能生成时分叉子进程时,Mongoid 都会自动重新连接到主数据库。如果您在应用程序中手动执行此操作,则可以删除您的代码。”
虽然知道什么是等效的 Mongoid 代码仍然很有趣。
【讨论】:
这似乎在某些时候发生了变化,请参阅docs.mongodb.com/mongoid/current/tutorials/…。你能修改你的答案吗?【参考方案2】:怎么样
::Mongoid.default_session.connect
::Mongoid.default_session.disconnect
【讨论】:
【参考方案3】:https://docs.mongodb.com/mongoid/current/tutorials/mongoid-configuration/#usage-with-forking-servers
mongodb.com 上的文档说,独角兽或乘客的 after_fork 和 before_fork 是必需的。
这可能最近发生了变化。这是 7.0 的 mongoid 文档
【讨论】:
以上是关于Heroku 的 Rails、Mongoid 和 Unicorn 配置的主要内容,如果未能解决你的问题,请参考以下文章
Mongoid 3 + Heroku (MongoHQ) 导致 Moped::Errors::OperationFailure
heroku mongohq 和 mongoid Mongo::ConnectionFailure
查询 Mongoid/rails 3 中的嵌入对象(“低于”、Min 运算符和排序)