DesignAssembler

備忘録に近い

Sidekiq

resqueやdelayed_jobのような非同期実行を実現するgem

redisが必要、redisはジョブの管理に使われている。

インストールはgem ‘sidekiq’でいい

ActiveJob(Rails 4.2で実装された) (http://qiita.com/ryohashimoto/items/2f8fd685920a5318def4) (http://railsguides.jp/active_job_basics.html)

Sidekickを使ってみる

各設定をしてsidekiqを起動すると以下のエラーが出ます

2015-12-04T03:01:48.149Z 66037 TID-ovg2q5l28 ERROR: redis-namespace gem not included in Gemfile, cannot use namespace 'sidekiq'

解決策 redis-namespace gemを入れる

config/sidekiq.rbのqueues:には、defaultと、app/workers/…..rbのsidekie_optionsで設定したqueue名を指定します

手順まとめ

redisのインストール

$ brew install redis

redisの起動

$ redis-server /usr/local/etc/redis.conf

Gemfileに

gem 'sidekiq'
gem ‘redis-namespace'

EventWorkerの作成

$ bundle exec rails g sidekiq:worker Event

これでapp/workers/event_worker.rbが生成されます

workerファイルの編集

event_worker.rbにsidekiq_optionsを追加

event_worker.rb
sidekiq_options queue: :event

sidekiq設定ファイルの記述

config/sidekiq.yml、config/initializers/sidekiq.rbを新規作成

sidekiq.ymlはqueuesの名前に気をつける

sidekiq.rbはserverとclientの両方を書く

sidekiqの起動

bundle exec sidekiq -C config/sidekiq.yml

queueに積む

コンソールからEventWorker.perform_async(1)で実行