module AggregateRoot::OnDSL

Constants

ANONYMOUS_CLASS

Public Instance Methods

on(*event_klasses, &block) click to toggle source
# File lib/aggregate_root.rb, line 15
def on(*event_klasses, &block)
  event_klasses.each do |event_klass|
    name = event_klass.to_s
    raise(ArgumentError, "Anonymous class is missing name") if name.start_with? ANONYMOUS_CLASS

    handler_name = "on_#{name}"
    define_method(handler_name, &block)
    @on_methods ||= {}
    @on_methods[name] = handler_name
    private(handler_name)
  end
end
on_methods() click to toggle source
# File lib/aggregate_root.rb, line 28
def on_methods
  @on_methods ||= {}
  (superclass.respond_to?(:on_methods) ? superclass.on_methods : {}).merge(@on_methods)
end