Module: Hey::Pubsub::Adapters::AsnAdapter

Defined in:
lib/hey/pubsub/adapters/asn_adapter.rb

Class Method Summary collapse

Class Method Details

.publish!(event_name, payload = {}) ⇒ Object



22
23
24
25
26
27
28
29
30
# File 'lib/hey/pubsub/adapters/asn_adapter.rb', line 22

def self.publish!(event_name, payload = {})
  if block_given?
    ActiveSupport::Notifications.instrument(event_name, payload) do
      yield
    end
  else
    ActiveSupport::Notifications.instrument(event_name, payload)
  end
end

.subscribe!(event_name) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/hey/pubsub/adapters/asn_adapter.rb', line 5

def self.subscribe!(event_name)
  if block_given?
    ActiveSupport::Notifications.subscribe(event_name) do |*args|
      asn_event = ActiveSupport::Notifications::Event.new(*args)

      payload = asn_event.payload.dup
      event = Hey::Pubsub::Event.new(uuid: payload.delete(:uuid),
                                     name: asn_event.name,
                                     started_at: asn_event.time,
                                     ended_at: asn_event.end,
                                     metadata: payload)

      yield(event.to_hash)
    end
  end
end