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_methodsObject



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