Sha256: 0097e38d11de2e446345862c615d69144b352dd04656dc563f97f2f1766d9658

Contents?: true

Size: 794 Bytes

Versions: 1

Compression:

Stored size: 794 Bytes

Contents

# frozen_string_literal: true

module Yael
  class Route
    attr_reader :descriptor, :target, :queue, :delay

    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

    def matches?(stream)
      return true if descriptor == :all

      descriptor.to_s == stream
    end

    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, event.stream, args)
    end

    private

    attr_reader :target_name, :target_method
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
yael-0.0.3 lib/yael/route.rb