我如何在运行时检查 rails 应用程序在 sidekiq worker 的上下文中是否为 运行?

How can I check at runtime if a rails app is running in the context of a sidekiq worker?

我想 运行 在 rails 初始化程序中仅针对 sidekiq 编写一些代码。有没有办法检查我的 rails 应用程序是否在 sidekiq 的上下文中 运行?我知道一种方法是简单地用 SIDEKIQ=yes ... 调用它,然后检查 ENV['SIDEKIQ'],但也许有更优雅的方法。

sidekiq 创建者在评论 here 中的答案是... 鼓声

Sidekiq.server?

如果你想 运行 初始化器中的代码块,惯用的方法是:

Sidekiq.configure_server do |config|
  # do it
end

如果您查看该方法的实现,它会非常清楚:

yield self if server?

https://github.com/mperham/sidekiq/blob/3330df0ee37cfd3e0cd3ef01e3e66b584b99d488/lib/sidekiq.rb#L75