gpt4 book ai didi

ruby-on-rails - 在 Rails 6 和 Puma 上仍然需要工作启动时建立连接吗?

转载 作者:行者123 更新时间:2023-12-03 17:11:32 24 4
gpt4 key购买 nike

我在 Heroku 上读到,对于 Rails(他们说 4+),当我使用多个工作人员并预加载应用程序时,我应该向 Puma 添加以下指令:

on_worker_boot do
ActiveRecord::Base.establish_connection
end

但是我有两个 preload_app!和多个 workers没有该代码......该应用程序似乎工作正常。

我错过了什么吗?那还需要吗?什么目的?

最佳答案

establish_connection假设您正在运行 Rails 5.2+,则不再需要调用。
用于在 Heroku 上进行 Puma 配置最佳实践的 Puma 维护插件的配置代码(它位于 here)目前包括以下内容:

# Not necessary in Rails 5.2+, see https://github.com/rails/rails/pull/29807
if defined?(::ActiveRecord) && defined?(::ActiveRecord::Base) && Gem::Version.new(Rails.version) < Gem::Version.new('5.2.0')
c.before_fork { ActiveRecord::Base.connection_pool.disconnect! }
c.on_worker_boot { ActiveRecord::Base.establish_connection }
end
注意这里的评论。对链接的 PR 和一些它链接到我的 PR 进行更多挖掘,导致 PR 实际上消除了对这些东西的需求: https://github.com/rails/rails/pull/31241 .在这个 PR 中,明确提出了这个问题,

Does this mean that if we have existing before_fork and on_worker_boot blocks in our pre-Rails 5.2.0 puma.rb file, we can now simply remove those blocks after upgrading to Rails 5.2.0?


我的 friend ,答案是……

Yes. (Assuming they're doing AR connection management, of course.)They're perfectly safe to leave there, so it's not called out in the upgrade guide, but they should no longer be necessary.

关于ruby-on-rails - 在 Rails 6 和 Puma 上仍然需要工作启动时建立连接吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62458471/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com