Skip to content

Instantly share code, notes, and snippets.

@vjdhama
Created August 7, 2013 20:28
Show Gist options
  • Save vjdhama/6178303 to your computer and use it in GitHub Desktop.
Save vjdhama/6178303 to your computer and use it in GitHub Desktop.
Edx Class 169.1x HW 1-5
#!/usr/bin/env ruby
class Class
def attr_accessor_with_history(attr_name)
attr_name = attr_name.to_s # make sure it's a string
attr_reader attr_name # create the attribute's getter
attr_reader attr_name+"_history" # create bar_history getter
class_eval %Q"
def #{attr_name}=(value)
if !defined? @#{attr_name}_history
@#{attr_name}_history = [@#{attr_name}]
end
@#{attr_name} = value
@#{attr_name}_history << value
end
"
end
end
class Foo
attr_accessor_with_history :bar
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment