Module: EventsManager

Defined in:
lib/events_manager.rb,
lib/events_manager/event.rb,
lib/events_manager/settings.rb,
lib/events_manager/removed_record.rb,
lib/events_manager/updated_record.rb,
lib/events_manager/hooks/add_assets.rb,
lib/events_manager/patches/issue_patch.rb,
lib/events_manager/patches/journal_patch.rb,
lib/events_manager/patches/test_case_patch.rb,
lib/events_manager/patches/time_entry_patch.rb,
lib/events_manager/patches/issue_relation_patch.rb,
lib/events_manager/patches/repository/git_patch.rb

Defined Under Namespace

Modules: Hooks, Patches Classes: Event, RemovedRecord, Settings, UpdatedRecord

Constant Summary collapse

EVENT_EXCEPTION_ATTRIBUTES =
{
  event_entity: proc { |e, _l, _ex| e.entity.name },
  event_action: proc { |e, _l, _ex| e.action.to_s },
  event_data: proc { |e, _l, _ex| e.data.to_yaml },
  listener_class: proc { |_e, l, _ex| l.class.name },
  listener_instance: proc { |_e, l, _ex| l.to_s },
  exception_class: proc { |_e, _l, ex| ex.class.name },
  exception_message: proc { |_e, _l, ex| ex.message },
  exception_stack: proc { |_e, _l, ex| ex.backtrace.join("\n") }
}.freeze

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.delay_disabledObject

Returns the value of attribute delay_disabled.



5
6
7
# File 'lib/events_manager.rb', line 5

def delay_disabled
  @delay_disabled
end

.log_exceptions_disabledObject

Returns the value of attribute log_exceptions_disabled.



5
6
7
# File 'lib/events_manager.rb', line 5

def log_exceptions_disabled
  @log_exceptions_disabled
end

Class Method Details

.add_listener(entity, action, listener) ⇒ Object



18
19
20
21
22
# File 'lib/events_manager.rb', line 18

def add_listener(entity, action, listener)
  return if listeners(entity, action).include?(listener)

  listeners(entity, action) << listener.to_s
end

.all_listenersObject



33
34
35
36
37
38
39
40
41
# File 'lib/events_manager.rb', line 33

def all_listeners
  r = []
  @listeners.each_value do |e|
    e.each_value do |a|
      r += a
    end
  end
  r.uniq
end

.trigger(entity, action, data) ⇒ Object



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

def trigger(entity, action, data)
  event = EventsManager::Event.new(entity, action, data)
  Rails.logger.debug("Event triggered: #{event}")
  listeners(entity, action).each do |l|
    Rails.logger.debug("Listener found: #{l}")
    run_delayed_listener(event, l.constantize.new(event))
  end
end