Module: AggregateRoot::AggregateMethods

Defined in:
lib/aggregate_root.rb

Constant Summary collapse

UNMARSHALED_VARIABLES =
%i[@version @unpublished_events]

Instance Method Summary collapse

Instance Method Details

#apply(*events) ⇒ Object



43
44
45
46
47
48
# File 'lib/aggregate_root.rb', line 43

def apply(*events)
  events.each do |event|
    apply_strategy.(self, event)
    @unpublished_events << event
  end
end

#marshal_dumpObject



65
66
67
68
69
70
71
72
# File 'lib/aggregate_root.rb', line 65

def marshal_dump
  instance_variables
    .reject { |m| UNMARSHALED_VARIABLES.include? m }
    .inject({}) do |vars, attr|
      vars[attr] = instance_variable_get(attr)
      vars
    end
end

#marshal_load(vars) ⇒ Object



74
75
76
# File 'lib/aggregate_root.rb', line 74

def marshal_load(vars)
  vars.each { |attr, value| instance_variable_set(attr, value) unless UNMARSHALED_VARIABLES.include?(attr) }
end

#unpublished_eventsObject



59
60
61
# File 'lib/aggregate_root.rb', line 59

def unpublished_events
  @unpublished_events.each
end

#versionObject



50
51
52
# File 'lib/aggregate_root.rb', line 50

def version
  @version
end

#version=(value) ⇒ Object



54
55
56
57
# File 'lib/aggregate_root.rb', line 54

def version=(value)
  @unpublished_events = []
  @version = value
end