class Eventifier::EventSubscriber

Attributes

klass[R]
method_name[R]

Public Class Methods

new(klass, method_name) click to toggle source
# File lib/eventifier/event_subscriber.rb, line 8
def initialize(klass, method_name)
  @klass, @method_name = klass, method_name
end
subscribe_to_all(klass, names) click to toggle source
# File lib/eventifier/event_subscriber.rb, line 2
def self.subscribe_to_all(klass, names)
  names.each do |method_name|
    new(klass, method_name).subscribe_to_method
  end
end

Public Instance Methods

subscribe_to_method() click to toggle source
# File lib/eventifier/event_subscriber.rb, line 12
def subscribe_to_method
  return if notifications.notifier.listening?(name)

  notifications.subscribe(name) do |*args|
    event = Eventifier::EventTranslator.new(*args).translate
    notifications.instrument "#{prefix}.notification.eventifier",
      verb: :create, event: event, object: event.eventable unless event.nil?
  end
end

Private Instance Methods

name() click to toggle source
# File lib/eventifier/event_subscriber.rb, line 26
def name
  "#{prefix}.event.eventifier"
end
notifications() click to toggle source
# File lib/eventifier/event_subscriber.rb, line 30
def notifications
  ActiveSupport::Notifications
end
prefix() click to toggle source
# File lib/eventifier/event_subscriber.rb, line 34
def prefix
  "#{method_name}.#{klass.name.tableize}"
end