7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# 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
|