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)で実行