Module: Haku::Eventable
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/haku/eventable.rb
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
- #haku_create_event(data) ⇒ Object
- #haku_event_data_name(data, evt) ⇒ Object
- #haku_event_data_values(data, evt) ⇒ Object
- #haku_prepare_event_data(evt, data = {}) ⇒ Object
- #haku_process_events(on) ⇒ Object
- #haku_process_events_for_failure ⇒ Object
- #haku_process_events_for_success ⇒ Object
- #haku_process_value(value) ⇒ Object
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_failure ⇒ Object
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_success ⇒ Object
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 |