Module: Haku::Eventable

Extended by:
ActiveSupport::Concern
Defined in:
lib/haku/eventable.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#haku_create_event(data) ⇒ Object



66
67
68
# File 'lib/haku/eventable.rb', line 66

def haku_create_event(data)
  Haku.event_model.safe_constantize&.create(data)
end

#haku_event_data_name(data, evt) ⇒ Object



47
48
49
50
# File 'lib/haku/eventable.rb', line 47

def haku_event_data_name(data, evt)
  key = Haku.event_property_for_name.to_sym
  data[key] = haku_process_value(evt[key] || Haku.event_name)
end

#haku_event_data_values(data, evt) ⇒ Object



52
53
54
55
56
# File 'lib/haku/eventable.rb', line 52

def haku_event_data_values(data, evt)
  evt.except(Haku.event_property_for_name.to_sym).each_pair do |key, value|
    data[key] = haku_process_value(value)
  end
end

#haku_prepare_event_data(evt, data = {}) ⇒ Object



40
41
42
43
44
45
# File 'lib/haku/eventable.rb', line 40

def haku_prepare_event_data(evt, data={})
  data.tap do
    haku_event_data_name(data, evt)
    haku_event_data_values(data, evt)
  end
end

#haku_process_events(on) ⇒ Object



34
35
36
37
38
# File 'lib/haku/eventable.rb', line 34

def haku_process_events(on)
  send("haku_#{on}_events").each do |evt|
    haku_create_event(haku_prepare_event_data(evt))
  end
end

#haku_process_events_for_failureObject



30
31
32
# File 'lib/haku/eventable.rb', line 30

def haku_process_events_for_failure
  haku_process_events(:failure)
end

#haku_process_events_for_successObject



26
27
28
# File 'lib/haku/eventable.rb', line 26

def haku_process_events_for_success
  haku_process_events(:success)
end

#haku_process_value(value) ⇒ Object



58
59
60
61
62
63
64
# File 'lib/haku/eventable.rb', line 58

def haku_process_value(value)
  if value.respond_to?(:call)
    instance_exec(&value)
  else
    value.is_a?(Symbol) ? send(value) : value
  end
end