LoginSignup
8
1

More than 1 year has passed since last update.

sidekiq-scheduler で スケジュールを環境ごとに変更する

Posted at

はじめに

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をファイルパスに含めることで環境ごとに登録するスケジュールを変更することができます

8
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
1