class Midnight::Rails::ActiveRecordWrapper
Public Class Methods
new( record, serializer:, metadata_adapter:, advance_metadata: )
click to toggle source
# File lib/midnight/rails/active_record_wrapper.rb, line 8 def initialize( record, serializer:, metadata_adapter:, advance_metadata: ) @record = record @serializer = serializer @metadata_adapter = metadata_adapter @advance_metadata = advance_metadata @state_loaded = false @state_changed = false end
Public Instance Methods
advance_metadata(events)
click to toggle source
# File lib/midnight/rails/active_record_wrapper.rb, line 39 def advance_metadata(events) @advance_metadata.call(@record, events) end
metadata()
click to toggle source
# File lib/midnight/rails/active_record_wrapper.rb, line 22 def metadata @metadata_adapter.call(@record) end
save!()
click to toggle source
# File lib/midnight/rails/active_record_wrapper.rb, line 43 def save! @record.state = @serializer.dump(@changed_state) \ if @state_changed @record.save! rescue ::ActiveRecord::StaleObjectError => e # rescue just to add the convenient marker module to the exception raise e if e.is_a?(Commons::ConcurrentWriteError) raise StaleObjectError.new(e.record, e.attempted_action) end
state()
click to toggle source
# File lib/midnight/rails/active_record_wrapper.rb, line 26 def state return @changed_state if @state_changed return @loaded_state if @state_loaded @loaded_state = @serializer.load(@record.state) @state_loaded = true @loaded_state end
state=(new_state)
click to toggle source
# File lib/midnight/rails/active_record_wrapper.rb, line 34 def state=(new_state) @state_changed = true @changed_state = new_state end