class EventSourcing::Event

Public Class Methods

define(*fields) click to toggle source
# File lib/event_sourcing/event.rb, line 6
def self.define(*fields)
  Class.new(self) do
    attr_reader(*fields)
    public_class_method :new

    define_method :initialize do |properties = {}|
      missing_keys = fields - properties.keys
      
      if missing_keys.any?
        raise ArgumentError, "missing keyword: #{missing_keys.first}"
      end

      fields.each do |field|
        instance_variable_set("@#{field}", properties[field])
      end
    end

    def to_s
      self.class.to_s
    end
  end
end

Public Instance Methods

to_s() click to toggle source
# File lib/event_sourcing/event.rb, line 23
def to_s
  self.class.to_s
end