module ObjectHistory::ClassMethods

Public Instance Methods

track_history_of(*methods, &block) click to toggle source
# File lib/object-history/object-history.rb, line 7
def track_history_of(*methods, &block)
  attr_accessor :__history

  methods.each do |method|
    track_method = "__#{method}__track__"
    unless private_instance_methods.include?(track_method)
      alias_method track_method, method
      private track_method
      define_method method do |*args, &block|
        @__history ||= [Marshal.load(Marshal.dump(self))]
        ret = send(track_method, *args, &block)
        @__history << Marshal.load(Marshal.dump(self))
        ret
      end
    end
  end
end