class EventRouter::Destination

Constants

DEFAULT_ATTRIBUTES

Constants

Attributes

handler[R]

Attributes

handler_method[R]

Attributes

name[R]

Attributes

options[R]

Attributes

payload_method[R]

Attributes

prefetch_payload[R]

Attributes

Public Class Methods

new(name, handler:, **opts) click to toggle source

Methods

# File lib/event_router/destination.rb, line 21
def initialize(name, handler:, **opts)
  opts = DEFAULT_ATTRIBUTES.merge(opts)

  @name             = name
  @handler          = handler
  @handler_method   = opts.delete(:handler_method)
  @prefetch_payload = opts.delete(:prefetch_payload)
  @payload_method   = opts.delete(:payload_method) || "#{name}_payload"
  @options          = opts
end

Public Instance Methods

extra_payload(event) click to toggle source
# File lib/event_router/destination.rb, line 44
def extra_payload(event)
  return nil unless event.respond_to?(payload_method)

  event.send(payload_method)
end
prefetch_payload?() click to toggle source
# File lib/event_router/destination.rb, line 40
def prefetch_payload?
  @prefetch_payload
end
process(event, payload) click to toggle source
# File lib/event_router/destination.rb, line 32
def process(event, payload)
  handler.send(
    handler_method || event.name,
    event: event,
    payload: payload
  )
end