Sidekiqの導入
前提
- redisが必要です
初期設定
やることは以下の2つ。
- Gemfileの編集
- 設定ファイルの作成
Gemfile
Gemfileにsidekiqを記述 & bundle install。
# Gemfile gem 'sidekiq' gem 'redis-namespace' ~ bundle install --path vendor/bundle
設定ファイルの作成
config/initializers/sidekiq.rbを以下の内容で作成。 host, portに関してはconfigで設定し、そこから呼んでいます。
Sidekiq.configure_server do |config| config.redis = { url: "redis://#{Settings.redis.host}:#{Settings.redis.port}/#{Settings.redis.db}", namespace: '_xxxxxx_sidekiq' } end Sidekiq.configure_client do |config| config.redis = { url: "redis://#{Settings.redis.host}:#{Settings.redis.port}/#{Settings.redis.db}", namespace: '_xxxxxx_sidekiq' } end
config/sidekiq.yml
:concurrency: 1 :queues: - default
Workerの作成
app/workers以下にworker用のファイルを作成します。 以下は例でメールを送信するworkerとして、email_worker.rb作成しています。
class EmailWorker include Sidekiq::Worker def perform(user_id) user = User.find_by(id: user_id) # ActionMailerを呼び出す処理なりを書く end end
呼び出し方
上で作ったEmailWorkerを呼び出すには以下のようにします。 これで実行のキューに入ります。
EmailWorker.perform_async(1)