【发布时间】:2021-09-10 22:23:46
【问题描述】:
我想在 Rails 初始化程序中运行一些代码,仅用于 sidekiq。有没有办法检查我的 rails 应用程序是否在 sidekiq 的上下文中运行?我知道一种方法是简单地使用SIDEKIQ=yes ... 调用它,然后检查ENV['SIDEKIQ'],但也许还有更优雅的方法。
【问题讨论】:
标签: ruby-on-rails sidekiq
我想在 Rails 初始化程序中运行一些代码,仅用于 sidekiq。有没有办法检查我的 rails 应用程序是否在 sidekiq 的上下文中运行?我知道一种方法是简单地使用SIDEKIQ=yes ... 调用它,然后检查ENV['SIDEKIQ'],但也许还有更优雅的方法。
【问题讨论】:
标签: ruby-on-rails sidekiq
如果要在初始化程序中运行代码块,惯用的方式是:
Sidekiq.configure_server do |config|
# do it
end
如果您查看该方法的实现,就会发现它非常清晰:
yield self if server?
https://github.com/mperham/sidekiq/blob/3330df0ee37cfd3e0cd3ef01e3e66b584b99d488/lib/sidekiq.rb#L75
【讨论】:
sidekiq 创建者在here 的评论中给出的答案是...... drumroll
Sidekiq.server?
【讨论】: