Sha256: 8d2a75cd35a20499eba966766a06e8c97fc6fece9e8a423823ede30cd2375843

Contents?: true

Size: 714 Bytes

Versions: 2

Compression:

Stored size: 714 Bytes

Contents

module Euston
  module EventHandler
    extend ActiveSupport::Concern
    include Euston::EventHandlerPrivateMethodNames

    module ClassMethods
      def subscribes type, version = 1, opts = nil, &consumer
        if self.include? Euston::AggregateRoot
          opts = opts || { :id => :id }

          self.class.send :define_method, id_from_event_method_name(type, version) do |event|
            if opts[:id].respond_to? :call
              opts[:id].call event
            else
              event[opts[:id]]
            end
          end
        end

        define_method event_handler_method_name(type, version) do |*args|
          instance_exec *args, &consumer
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
euston-1.1.0 lib/euston/event_handler.rb
euston-1.1.0-java lib/euston/event_handler.rb