class Yael::Route

Attributes

delay[R]
descriptor[R]
queue[R]
target[R]
target_method[R]
target_name[R]

Public Class Methods

new(descriptor:, target:, queue: :default, delay: nil) click to toggle source
# File lib/yael/route.rb, line 7
def initialize(descriptor:, target:, queue: :default, delay: nil)
  @descriptor = descriptor
  @target = target
  @queue = queue
  @delay = delay
  @target_name = target.split("#").first.classify
  @target_method = target.split("#").second
end

Public Instance Methods

dispatch(event) click to toggle source
# File lib/yael/route.rb, line 22
def dispatch(event)
  method = target_method || "on_#{event.name}"
  args = event.payload.symbolize_keys
  ExecutionJob.set(queue: queue, wait: delay).perform_later(target_name, method, args)
end
matches?(stream) click to toggle source
# File lib/yael/route.rb, line 16
def matches?(stream)
  return true if descriptor == :all

  descriptor.to_s == stream
end