Guest User

Untitled

a guest
Sep 20th, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.87 KB | None | 0 0
  1. module ProofTest
  2. class Model
  3. def self.attr_reader property
  4. define_method property do
  5. puts "reading #{attributes[property]} from #{property}"
  6. attributes[property]
  7. end
  8. end
  9.  
  10. def self.attr_writer property
  11. define_method :"#{property}=" do |value|
  12. attributes[property] = value
  13. puts "setting #{property} to #{value}"
  14. end
  15. end
  16.  
  17. def self.attr_accessor property
  18. attr_reader property
  19. attr_writer property
  20. end
  21.  
  22. def attributes
  23. class << self
  24. @attributes ||= Hash.new
  25. end
  26. end
  27. end
  28. end
  29.  
  30. module ProofTest
  31. class Person < Model
  32. attr_accessor :age
  33. attr_accessor :name
  34. end
  35. end
  36.  
  37. david = ProofTest::Person.new
  38.  
  39. david.name = "David"
  40. david.age = 25
  41.  
  42. p david
  43.  
  44. p david.attributes
  45. david.attributes.each do |attribute, value|
  46. puts "Attribute #{attribute} is set to #{value}"
  47. end
Add Comment
Please, Sign In to add comment