class Sidekiq::Promise::Subscription

Public Class Methods

ready() click to toggle source
# File lib/sidekiq/promise/subscription.rb, line 14
def ready
  @ready ||= MrDarcy.promise do |promise|
    Sidekiq::Promise.redis_pool.with do |redis|
      redis.subscribe Sidekiq::Promise::Middleware::CHANNEL do |on|
        on.subscribe do
          promise.resolve true
        end
        on.message do |channel,message|
          message = JSON.parse(message)
          subscriptions.each do |block|
            block.call message
          end
        end
      end
    end
  end
end
subscribe(&block) click to toggle source
# File lib/sidekiq/promise/subscription.rb, line 5
def subscribe &block
  subscriptions << block
  block
end
unsubscribe(id) click to toggle source
# File lib/sidekiq/promise/subscription.rb, line 10
def unsubscribe id
  subscriptions.delete id
end

Private Class Methods

subscriptions() click to toggle source
# File lib/sidekiq/promise/subscription.rb, line 34
def subscriptions
  @subscriptions ||= []
end