Advertisement
Guest User

Untitled

a guest
Dec 10th, 2016
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.60 KB | None | 0 0
  1. module InstanceCounter
  2. def self.included(base)
  3. base.class_variable_set :@@instances, 0
  4. base.extend ClassMethods
  5. base.send :include, InstanceMethods
  6. end
  7.  
  8. module ClassMethods
  9. def instances
  10. self.class_variable_get :@@instances
  11. end
  12. end
  13.  
  14. module InstanceMethods
  15. protected
  16.  
  17. def register_instance
  18. self.class.class_variable_set :@@instances, (self.class.class_variable_get(:@@instances) + 1)
  19. end
  20. end
  21. end
  22.  
  23. class Train
  24. include InstanceCounter
  25. def initialize
  26. self.register_instance
  27. end
  28. end
  29.  
  30. train1 = Train.new
  31. train2 = Train.new
  32.  
  33. puts Train.instances # => 2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement