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



46
47
48
49
50
51
# File 'lib/aggregate_root.rb', line 46

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

#marshal_dumpObject



68
69
70
71
72
73
74
75
# File 'lib/aggregate_root.rb', line 68

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



77
78
79
# File 'lib/aggregate_root.rb', line 77

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

#unpublished_eventsObject



62
63
64
# File 'lib/aggregate_root.rb', line 62

def unpublished_events
  @unpublished_events.each
end

#versionObject



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

def version
  @version
end

#version=(value) ⇒ Object



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

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