ruby-on-railssidekiqwisper

Not start the queue by wisper-sidekiq


I'm trying to make a small example with wisper-sidekiq gem. The queue is created, but it does not start. Why? I will describe the steps that you are doing, I think it will be easier. I hope for your help.

A. controller:

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. service:

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. listener:

class ActivityListener
  def self.reserver_item_successfull(performer, book)
    puts performer.name.to_s + ", book: " + book.title.to_s
  end
end

When I save the book, then of course creates a queue. But:

Maybe I'm wrong start redis (redis-server) or sidekiq (bundle exec sidekiq)? Please help me.

P.S. Try bundle exec sidekiq -d -e production sidekiq -q default -C config/sidekiq.yml, but not result. The sidekiq.rb empty.


Solution

  • The problem is solved. I had to run sidekiq:

    bundle exec sidekiq-r ./server.rb-L log/sidekiq.log also in server.rb

    require 'sidekiq'

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

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