class Eternity::ObjectTracker
Attributes
changes[R]
Public Class Methods
new(options)
click to toggle source
# File lib/eternity/object_tracker.rb, line 7 def initialize(options) @changes = Restruct::MarshalArray.new options end
Public Instance Methods
delete()
click to toggle source
# File lib/eternity/object_tracker.rb, line 19 def delete track DELETE end
flatten()
click to toggle source
# File lib/eternity/object_tracker.rb, line 29 def flatten TrackFlatter.flatten changes end
insert(data)
click to toggle source
# File lib/eternity/object_tracker.rb, line 11 def insert(data) track INSERT, data end
revert()
click to toggle source
# File lib/eternity/object_tracker.rb, line 23 def revert locker.lock! :revert do changes.destroy end end
update(data)
click to toggle source
# File lib/eternity/object_tracker.rb, line 15 def update(data) track UPDATE, data end
Private Instance Methods
locker()
click to toggle source
# File lib/eternity/object_tracker.rb, line 48 def locker Eternity.locker_for repository_name end
repository_name()
click to toggle source
# File lib/eternity/object_tracker.rb, line 52 def repository_name changes.id.sections.reverse[3] end
track(action, data=nil)
click to toggle source
# File lib/eternity/object_tracker.rb, line 37 def track(action, data=nil) locker.lock :track do change = {'action' => action} change['blob'] = Blob.write(:data, data) if data Eternity.logger.debug(self.class) { "#{changes.id} - #{change} - #{data}" } changes << change end end