Class: Omnitrack::Pipeline::Dispatcher

Inherits:
Object
  • Object
show all
Defined in:
lib/omnitrack/pipeline/dispatcher.rb

Overview

Central event dispatcher. Instantiates all enabled adapters, runs the requested operation on each, and returns an Omnitrack::MultiResult.

Usage (called by Omnitrack module methods):

Omnitrack::Pipeline::Dispatcher.dispatch(:track_event, "purchase", payload)

Class Method Summary collapse

Class Method Details

.dispatch(operation, *args) ⇒ Omnitrack::MultiResult

Parameters:

  • operation (Symbol)

    one of :track_event, :track_conversion, :identify_user

  • args (Array)

    forwarded to the adapter method

Returns:



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/omnitrack/pipeline/dispatcher.rb', line 17

def dispatch(operation, *args)
  adapters = Omnitrack::Registry.enabled_adapters

  if adapters.empty?
    Omnitrack.logger.warn("dispatcher.no_adapters",
                          operation: operation)
    return Omnitrack::MultiResult.new([
      Omnitrack::Result.skipped(reason: "no enabled adapters")
    ])
  end

  results = adapters.map do |adapter|
    dispatch_to(adapter, operation, args)
  end

  Omnitrack::MultiResult.new(results)
end