【发布时间】:2017-09-03 09:35:21
【问题描述】:
我正在使用 Sidekiq/Redis 在 Heroku 上运行 Rails 5.0.x 应用程序,并且我部署了新代码,应该使用多次重试失败的 Sidekiq 作业。
在https://github.com/mperham/sidekiq/wiki/FAQ,我看到了:
Rails 有两个与此处相关的特性:预加载和 自动加载。自动加载仅在开发模式下有效,而不是 线程安全,因此 Sidekiq 将其禁用并仅使用急切加载。渴望的 加载只在启动服务器时加载你的代码一次 - 它确实 不要在作业之间重新加载您的代码。如果您的代码位于 标准 Rails 目录(例如 app/models、app/controllers、 等),Sidekiq 将不会看到它,除非您将路径添加到 在 Rails 应用程序配置中加入 eager_load_paths:
# in config/application.rb
module AcmeCorp
class Application < Rails::Application
config.eager_load_paths += ["#{config.root}/lib/workers"]
end
end
“因为 Sidekiq 不会在作业之间重新加载代码”,这是否意味着我不能在不开始新作业的情况下使用新的 Rails 生产代码?或者如果我重新启动失败的作业,它会使用新部署的代码吗?
【问题讨论】:
标签: ruby-on-rails heroku sidekiq