Rails5 で sidekiq を使う
Ruby Ruby on Rails
Published: 2019-06-15

やったこと

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

参考