公式のUsageはrailsで動かす前提じゃなかったので、railsで動かす場合のUsage的な何か。
-
- ばーじょん
Gemfile.lock
rails (6.0.1)
sidekiq (6.0.7)
sidekiq-scheduler (3.0.1)
-
- Gemfile書く
Gemfile
gem 'sidekiq-scheduler'
gem 'sinatra', require: false # ダッシュボードいらない場合はいらない
-
- 初期設定を書く
herokuで動かす場合は環境変数に設定しておくこともできるので、その場合はなくても構わない、多分。
config/initializers/sidekiq.rb
Sidekiq.configure_server do |config|
config.redis = { url: ENV.fetch('REDIS_URL') { 'redis://localhost:6379' } }
end
Sidekiq.configure_client do |config|
config.redis = { url: ENV.fetch('REDIS_URL') { 'redis://localhost:6379' } }
end
-
- ジョブを作る
app/jobs/
内に作る。ApplicationJob
を継承していれば自動的にsidekiq-scheduler
がジョブとして認識してくれる。ここ参照
app/jobs/hello_world_job.rb
class HelloWorldJob < ApplicationJob
def perform
puts 'test'
end
end
-
- ジョブを登録する
こっちの拡張子はyml
ですよ。
config/sidekiq.yml
:schedule:
hello_world:
every: '1m'
class: HelloWorldJob
-
- ダッシュボード見れるようにする
config/routes.rb
require 'sidekiq/web'
require 'sidekiq-scheduler/web'
Rails.application.routes.draw do
mount Sidekiq::Web, at: "/sidekiq"
end
これで http://localhost:3000/sidekiq のURLでsidekiqのダッシュボードが見れるようになる。
-
- sidekiq動かす
rails s
とは別プロセスで動かす必要がある。
$ bundle exec sidekiq
こんな感じで見れたら成功。