wisper-sidekiq gemを使って小さな例を作ろうとしています。キューは作成されますが、開始されません。なんで?あなたが行っている手順を説明します。簡単になると思います。あなたの助けを願っています。
A. コントローラー:
class BooksController < ApplicationController
def create
service = CreateBook.new
service.subscribe(ActivityListener, async: true)
service.on(:reserver_item_successfull) { |book| redirect_to book_path(book.id) }
service.on(:reserver_item_failed) { |book| @book = Book.new(book_params); respond_with(@book) }
service.execute(current_user, book_params)
end
B. サービス:
require 'wisper/sidekiq'
require 'sidekiq/api'
class CreateBook
include Wisper::Publisher
def execute(performer, attributes)
book = Book.new(attributes)
if book.valid?
book.save
broadcast(:reserver_item_successfull, performer, book)
else
broadcast(:book_failed, performer, book)
end
end
end
C. リスナー:
class ActivityListener
def self.reserver_item_successfull(performer, book)
puts performer.name.to_s + ", book: " + book.title.to_s
end
end
本を保存すると、もちろんキューが作成されます。しかし:
- sidekiq silent (ログは空ですが、キューは作成されました)
- redisもサイレント
たぶん、redis ( redis-server ) または sidekiq ( bundle exec sidekiq ) を開始するのが間違っているのでしょうか? 私を助けてください。
PS bundle exec sidekiq -d -e production sidekiq -q default -C config/sidekiq.ymlを試してみてください。sidekiq.rbが空です。