a persisted/dirty resource
# File lib/dm-core/resource/persistence_state/dirty.rb, line 18 18: def commit 19: remove_from_identity_map 20: set_child_keys 21: return self unless valid_attributes? 22: update_resource 23: reset_original_attributes 24: reset_resource_key 25: Clean.new(resource) 26: ensure 27: add_to_identity_map 28: end
# File lib/dm-core/resource/persistence_state/dirty.rb, line 13 13: def delete 14: reset_resource 15: Deleted.new(resource) 16: end
# File lib/dm-core/resource/persistence_state/dirty.rb, line 35 35: def original_attributes 36: @original_attributes ||= {} 37: end
# File lib/dm-core/resource/persistence_state/dirty.rb, line 82 82: def reset_original_attributes 83: original_attributes.clear 84: end
# File lib/dm-core/resource/persistence_state/dirty.rb, line 57 57: def reset_resource 58: reset_resource_properties 59: reset_resource_relationships 60: end
# File lib/dm-core/resource/persistence_state/dirty.rb, line 62 62: def reset_resource_key 63: resource.instance_eval { remove_instance_variable(:@_key) } 64: end
# File lib/dm-core/resource/persistence_state/dirty.rb, line 66 66: def reset_resource_properties 67: # delete every original attribute after resetting the resource 68: original_attributes.delete_if do |property, value| 69: property.set!(resource, value) 70: true 71: end 72: end
# File lib/dm-core/resource/persistence_state/dirty.rb, line 74 74: def reset_resource_relationships 75: relationships.each do |relationship| 76: next unless relationship.loaded?(resource) 77: # TODO: consider a method in Relationship that can reset the relationship 78: resource.instance_eval { remove_instance_variable(relationship.instance_variable_name) } 79: end 80: end
# File lib/dm-core/resource/persistence_state/dirty.rb, line 41 41: def track(subject, value) 42: if original_attributes.key?(subject) 43: # stop tracking if the new value is the same as the original 44: if original_attributes[subject].eql?(value) 45: original_attributes.delete(subject) 46: end 47: elsif !value.eql?(original = get(subject)) 48: # track the original value 49: original_attributes[subject] = original 50: end 51: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.