Class: Eventish::Adapters::Wisper

Inherits:
Object
  • Object
show all
Extended by:
Wisper::Publisher
Defined in:
lib/eventish/adapters/wisper.rb

Class Method Summary collapse

Class Method Details

.publish(event, target = nil, block: nil) ⇒ Object

Raises:

  • (ArgumentError)


9
10
11
12
13
14
# File 'lib/eventish/adapters/wisper.rb', line 9

def publish(event, target = nil, block: nil)
  raise ArgumentError, 'Missing event to publish' if event.nil?

  options = block ? { block: block } : {} # TODO: verify block feature
  broadcast(event.to_s, target, options)
end

.subscribe(event, handler) ⇒ Object

Raises:

  • (ArgumentError)


16
17
18
19
20
21
22
23
# File 'lib/eventish/adapters/wisper.rb', line 16

def subscribe(event, handler)
  raise ArgumentError, 'Missing event to subscribe' if event.nil?
  raise ArgumentError, 'Missing handler for subscription' if handler.nil?

  ::Wisper.subscribe(handler.new, on: event.to_s, with: :call).tap do |subscriber|
    Eventish.subscribers[event.to_s] = subscriber
  end
end

.unsubscribe(event) ⇒ Object

Raises:

  • (ArgumentError)


25
26
27
28
29
30
31
# File 'lib/eventish/adapters/wisper.rb', line 25

def unsubscribe(event)
  raise ArgumentError, 'Missing event to unsubscribe' if event.nil?

  subscriber = Eventish.subscribers[event.to_s]
  ::Wisper.unsubscribe(subscriber)
  Eventish.subscribers.delete(event.to_s)
end