DelayedJobと比べると使い方が少し違うので注意が必要。
Extentionを読み込むとdelayが使える
config/initializers/sidekq.rb
に下記を追加(存在しない場合は作成)。これで毎回performを書かなくて良い。
Sidekiq::Extensions.enable_delay!
これで、User.delay.my_method
が使える!
https://github.com/mperham/sidekiq/wiki/Delayed-extensions
インスタンスメソッドを使わない
インスタンスメソッドでも一見動いたので大丈夫かと思ったが実際運用してみるとだめだった。クラスメソッドでWrapして使いましょう。よく見ると太字でだめと書かれている。
I strongly recommend avoiding delaying methods on instances. This stores object state in Redis which can get out of date, causing stale data problems.
ランタイム時に動的なQueue名を指定しない
それ用のライブラリが別途あるのでそれを使用。スタティックなQueue使いにくい。。ユーザ毎にキューを用意したい。。
https://stackoverflow.com/questions/20133346/how-can-i-create-sidekiq-queues-with-variable-names-at-runtime