やったこと
Rails5 で sidekiq を使います。
確認環境
$ ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin17]
$ rails --version
Rails 5.2.3
調査
インストールからやっていきます。
redis のインストール
$ brew install redis
$ redis-server --version
Redis server v=5.0.5 sha=00000000:0 malloc=libc bits=64 build=272e5301ea2dcb73
redisサーバーを起動します
$ redis-server /usr/local/etc/redis.conF
sidekiq のインストール
Gemfile
gem 'sidekiq', '~> 5.2', '>= 5.2.7'
$ bundle install
もしかしたら、エラーが出るかもしれないのでこちら見てみてください
Rails5 で bundle install が失敗する件 – ためすう
sidekiq の設定
config/initializers/sidekiq.rb
Sidekiq.configure_server do |config|
config.redis = { url: 'redis://localhost:6379'}
end
config/sidekiq.yml
:pidfile: ./tmp/pids/sidekiq.pid
:logfile: ./log/sidekiq.log
:queues:
- task
$ bundle exec sidekiq -C config/sidekiq.yml
sidekiq の ワーカー作成
app/workers/task_worker.rb
class TaskWorker
include Sidekiq::Worker
sidekiq_options queue: :task
def perform(id)
logger.debug('id 出力')
logger.debug(id)
end
end
※ ログを出力するには、設定する必要があるのですが、また今度。
Queue を登録
app/controllers/tasks_controller.rb
class TasksController < ApplicationController
def new
TaskWorker.perform_async 333
end
end