Class: Sidekiq::Promise::Subscription

Inherits:
Object
  • Object
show all
Defined in:
lib/sidekiq/promise/subscription.rb

Class Method Summary collapse

Class Method Details

.readyObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 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) ⇒ Object



5
6
7
8
# File 'lib/sidekiq/promise/subscription.rb', line 5

def subscribe &block
  subscriptions << block
  block
end

.unsubscribe(id) ⇒ Object



10
11
12
# File 'lib/sidekiq/promise/subscription.rb', line 10

def unsubscribe id
  subscriptions.delete id
end