module Operate::Pubsub::Publisher

A Command uses Publisher to register event handlers and broadcast to them.

Public Instance Methods

broadcast(event, *args) click to toggle source

Broadcasts an event

@example

def call
  # ...
  broadcast(:finished)
end

@return [self]

# File lib/operate/pubsub/publisher.rb, line 33
def broadcast(event, *args)
  registrations.each do |registration|
    registration.broadcast(clean_event(event), *args)
  end
  self
end
on(*events, &block) click to toggle source

Subscribe a block

@example

my_publisher.on(:order_created) { |args| ... }

@return [self]

# File lib/operate/pubsub/publisher.rb, line 17
def on(*events, &block)
  raise ArgumentError, 'must give at least one event' if events.empty?
  raise ArgumentError, 'must pass a block' unless block
  registrations << Operate::Pubsub::Registration.new(block, on: events)
  self
end

Private Instance Methods

clean_event(event) click to toggle source
# File lib/operate/pubsub/publisher.rb, line 46
def clean_event(event)
  event.to_s.gsub('-', '_')
end
registrations() click to toggle source
# File lib/operate/pubsub/publisher.rb, line 42
def registrations
  @registrations ||= Set.new
end