Module: AggregateRoot::ClassMethods
- Defined in:
- lib/aggregate_root.rb
Instance Method Summary collapse
Instance Method Details
#on(*event_klasses, &block) ⇒ Object
8 9 10 11 12 13 14 15 16 17 |
# File 'lib/aggregate_root.rb', line 8 def on(*event_klasses, &block) event_klasses.each do |event_klass| name = event_klass.name || raise(ArgumentError, "Anonymous class is missing name") handler_name = "on_#{name}" define_method(handler_name, &block) @on_methods ||= {} @on_methods[event_klass]=handler_name private(handler_name) end end |
#on_methods ⇒ Object
19 20 21 22 23 24 |
# File 'lib/aggregate_root.rb', line 19 def on_methods ancestors. select{|k| k.instance_variables.include?(:@on_methods)}. map{|k| k.instance_variable_get(:@on_methods) }. inject({}, &:merge) end |