sidekiq で namespace を使えるようにする
Ruby Ruby on Rails
Published: 2019-06-19

やったこと

Rails5 で sidekiq を利用しているのですが、queue に namespace を指定するとエラーが発生しました。

今回はこのエラーを解消を目指します。

確認環境

$ ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin17]

$ rails --version
Rails 5.2.3

$ gem list | grep sidekiq
sidekiq (5.2.7)

前提

sidekiq がインストール済みとします。

Rails5 で sidekiq を使う – ためすう

調査

発生したエラー

config/initializers/sidekiq.rb

Sidekiq.configure_server do |config|
  config.redis = { url: 'redis://localhost:6379', namespace: 'sidekiq' }
end

namespace を指定しました。

エラー

2019-06-15T07:14:53.315Z 47524 TID-ov7xxfh88 INFO: Booting Sidekiq 5.2.7 with redis options {:url=>"redis://localhost:6379", :namespace=>"sidekiq", :id=>"Sidekiq-server-PID-47524"}
2019-06-15T07:14:53.426Z 47524 TID-ov7xxfh88 INFO: Running in ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin17]
2019-06-15T07:14:53.426Z 47524 TID-ov7xxfh88 INFO: See LICENSE and the LGPL-3.0 for licensing details.
2019-06-15T07:14:53.426Z 47524 TID-ov7xxfh88 INFO: Upgrade to Sidekiq Pro for more features and support: http://sidekiq.org
2019-06-15T07:14:53.429Z 47524 TID-ov7xxfh88 ERROR: Your Redis configuration uses the namespace 'sidekiq' but the redis-namespace gem is not included in the Gemfile.Add the gem to your Gemfile to continue using a namespace. Otherwise, remove the namespace parameter.

どうやら、redis-namespace をインストールする必要があるようです。

redis-namespace をインストール

Gemfile

gem 'redis-namespace'
$ bundle install

設定ファイルの修正

キューを入れるときの設定も追記します。

※ namespace も myapp に変えました。

config/initializers/sidekiq.rb

Sidekiq.configure_server do |config|
  config.redis = { url: 'redis://localhost:6379', namespace: 'myapp' }
end

Sidekiq.configure_client do |config|
  config.redis = { url: 'redis://localhost:6379', namespace: 'myapp' }
end

rails と redis をそれぞれ再起動したら、OKです。

参考