問題
Rails Server や Rake Task のプロセスで実行するパッチを Sidekiq のプロセスでは実行したくない。
最新の解決策
下記のメソッドを使って判定する。
if Sidekiq.server?
# sidekiq のプロセス
else
# sidekiq のプロセスでない普通の rails のプロセス
end
以前の解決策
Sidekiq プロセスは起動時に config/sidekiq.yml を読み込み、 Sidekiq.options に格納する。したがって自身が Sidekiq プロセスかどうかを見るには config/sidekiq.yml にしか書かれていない情報がすでに読み込まれているかを確かめればよい。たとえば下のような分岐をする。
if Sidekiq.options[:queues].present?
puts "Sidekiq プロセス"
else
puts "Rails Server プロセスをはじめとした Sidekiq 以外のプロセス"
end
config/sidekiq.yml 以外で queues を定義している場合はその限りでない。