はじめに
sidekiqを利用する際にproductionやdevelopment、stagingでそれぞれ一部実行したくないJobがでてきました
そのためスケジュールを環境ごとに変更できるようにしました
今回の記事はこちらの issue の内容を解説したものになります
環境ごとに別のファイルからスケジュールをロードする
READMEに記載されている内容ですが config/sidekiq.yml
とは別のファイルでスケジュールを設定することができます
require 'sidekiq'
require 'sidekiq-scheduler'
Sidekiq.configure_server do |config|
config.on(:startup) do
Sidekiq.schedule = YAML.load_file(File.expand_path('../../sidekiq_scheduler.yml', __FILE__))
SidekiqScheduler::Scheduler.instance.reload_schedule!
end
end
The above code can be placed in an initializer (in
config/initializers
) that runs every time the app starts up.
READMEより引用させていただきましたが上記の例ではconfig/initializers
以下に配置することでスケジュールのみを記載したsidekiq_scheduler.yml
を用意し読み込む処理を実行することができます
Sidekiq.configure_server do |config|
config.on(:startup) do
Sidekiq.schedule = YAML.load_file(File.expand_path("config/scheduler/#{Rails.env}.yml", __FILE__))
SidekiqScheduler::Scheduler.instance.reload_schedule!
end
end
こちらの仕組みを利用してロードするファイルを環境ごとになるようにconfig/schedulers/development.yml
などのスケジュールファイルを用意しRails.env
をファイルパスに含めることで環境ごとに登録するスケジュールを変更することができます