Module: Ribbon::EventBus::Publishers

Defined in:
lib/ribbon/event_bus/publishers.rb,
lib/ribbon/event_bus/publishers/publisher.rb,
lib/ribbon/event_bus/publishers/proc_publisher.rb,
lib/ribbon/event_bus/publishers/resque_publisher.rb,
lib/ribbon/event_bus/publishers/remote_resque_publisher.rb,
lib/ribbon/event_bus/publishers/subscriptions_publisher.rb

Defined Under Namespace

Classes: ProcPublisher, Publisher, RemoteResquePublisher, ResquePublisher, SubscriptionsPublisher

Class Method Summary collapse

Class Method Details

._load_for_instance(instance, publishers) ⇒ Object



20
21
22
# File 'lib/ribbon/event_bus/publishers.rb', line 20

def _load_for_instance(instance, publishers)
  publishers.map { |publisher| _load_with_args(publisher, instance) }
end

._load_from_proc(publisher_proc) ⇒ Object



48
49
50
# File 'lib/ribbon/event_bus/publishers.rb', line 48

def _load_from_proc(publisher_proc)
  ProcPublisher.new(&publisher_proc)
end

._load_from_string(publisher_name) ⇒ Object



42
43
44
45
46
# File 'lib/ribbon/event_bus/publishers.rb', line 42

def _load_from_string(publisher_name)
  const_get((publisher_name.split('_').map(&:capitalize) + ['Publisher']).join)
rescue NameError
  raise Errors::InvalidPublisherNameError, publisher_name
end

._load_with_args(publisher, *args) ⇒ Object



24
25
26
27
28
29
30
31
# File 'lib/ribbon/event_bus/publishers.rb', line 24

def _load_with_args(publisher, *args)
  case publisher
  when Array
    _load_with_args(publisher[0], *(args + publisher[1..-1]))
  else
    load(publisher).new(*args)
  end
end

.load(publisher) ⇒ Object



33
34
35
36
37
38
39
40
# File 'lib/ribbon/event_bus/publishers.rb', line 33

def load(publisher)
  case publisher
  when String, Symbol then _load_from_string(publisher.to_s)
  when Proc           then _load_from_proc(publisher)
  when Publisher      then publisher
  else raise Errors::InvalidPublisherError, publisher.inspect
  end
end

.load_for_instance(instance) ⇒ Object



15
16
17
18
# File 'lib/ribbon/event_bus/publishers.rb', line 15

def load_for_instance(instance)
  config = instance.config
  config.publish_to? ? _load_for_instance(instance, config.publish_to) : []
end