1

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空です。

4

2 に答える 2

1

問題は解決された。sidekiq を実行する必要がありました:

bundle exec sidekiq-r ./server.rb-L log/sidekiq.log server.rb にも

「sidekiq」が必要

Sidekiq.configure_server do |config| config.redis = { url: 'redis://localhost:6379/0' } 終了

Sidekiq.configure_client do |config| config.redis = { url: 'redis://localhost:6379/0' } 終了

于 2015-02-25T17:11:12.627 に答える