Sidekiq-Cron を Rails で使うときの注意点(その1)

Sidekiq-Cron

こちらです。

注意点

YAML に設定を書いて*1initializers/ 配下で起動時に呼び出すやり方の場合の注意点を書きます。公式ドキュメント における「What objects/classes can be scheduled」→「or from YML (same notation as Resque-scheduler)」のところに記述されているやり方です。

1. Job を発動させるメソッドは load_from_hash! を用いる

上記ドキュメントでは Sidekiq::Cron::Job.load_from_hash というメソッドを用いて Job を発動(登録)しています。

が、この load_from_hash メソッドでは、過去に登録したジョブが生き残ります。上書きをするためには load_from_hash! メソッドを用いる必要があります*2

2. Job の内容を変更した場合は Sidekiq を再起動させないと反映されない

表題のとおりですが、Job の追加や修正を行った場合には、Sidekiq を再起動させる必要があります。

3. 「2.」の条件より、Capistrano の使用はほぼマスト(さらに言えば sidekiq-cron-tasks を使う)

「2.」の内容により、実際の運用には Sidekiq の再起動を伴うため Capistrano を使うことはほぼマストでしょう。

Job を発動させるコードを initializers/ 配下に記述しない場合*3は、sidekiq-cron-tasks という gem を入れれば単独で呼び出せます。Capistrano を使うのならばこの gem を使ったほうがよいと思います。「1.」も自動でやってくれるのであれこれ悩む必要がなくなるからです。

4. cron のメニューをダッシュボードへ 追加しておきましょう

めちゃくちゃ便利なので利用しない理由がないです。ドキュメント に沿って設定しましょう。

つづき

*1:例えばそれを config/schedule.yml に置いて

*2:もちろん過去のジョブを残したい場合は ! 無しのメソッドでいいです

*3:したくない場合

Powered by はてなブログ