Skip to content

Instantly share code, notes, and snippets.

@mrgenixus
Forked from davidjbeveridge/attribute_observers.rb
Created March 28, 2012 02:13
Show Gist options
  • Save mrgenixus/2222891 to your computer and use it in GitHub Desktop.
Save mrgenixus/2222891 to your computer and use it in GitHub Desktop.
Attribute Observers
require "rubygems"
require "bundler/setup"
require "json"
module ProofTest
class Model
def self.attr_reader property
define_method property do
puts "reading #{attributes[property]} from #{property}"
attributes[property]
end
end
def self.attr_writer property
define_method :"#{property}=" do |value|
attributes[property] = value
puts "setting #{property} to #{value}"
end
end
def self.attr_accessor property
attr_reader property
attr_writer property
end
def attributes
class << self
@attributes ||= Hash.new
end
end
end
end
module ProofTest
module Person
class Model < ProofTest::Model
attr_accessor :age
attr_accessor :name
end
end
end
david = ProofTest::Person::Model.new
david.name = "David"
david.age = 25
p david
david.attributes.each do |attribute, value|
puts "Attribute #{attribute} is set to #{value}"
end
puts david.attributes.to_json
source "http://rubygems.org"
gem "json"
GEM
remote: http://rubygems.org/
specs:
json (1.6.6)
PLATFORMS
ruby
DEPENDENCIES
json
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment