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



73
74
75
# File 'lib/haku/eventable.rb', line 73

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

#haku_event_data_base(data) ⇒ Object



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

def haku_event_data_base(data)
  Haku.event_properties.each do |property|
    data[property] = send(property) if respond_to?(property)
  end
end

#haku_event_data_name(data, evt) ⇒ Object



62
63
64
65
# File 'lib/haku/eventable.rb', line 62

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

#haku_event_data_values(data, evt) ⇒ Object



67
68
69
70
71
# File 'lib/haku/eventable.rb', line 67

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
46
# File 'lib/haku/eventable.rb', line 40

def haku_prepare_event_data(evt, data={})
  data.tap do
    haku_event_data_base(data)
    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



54
55
56
57
58
59
60
# File 'lib/haku/eventable.rb', line 54

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