Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module InstanceCounter
- def self.included(base)
- base.class_variable_set :@@instances, 0
- base.extend ClassMethods
- base.send :include, InstanceMethods
- end
- module ClassMethods
- def instances
- self.class_variable_get :@@instances
- end
- end
- module InstanceMethods
- protected
- def register_instance
- self.class.class_variable_set :@@instances, (self.class.class_variable_get(:@@instances) + 1)
- end
- end
- end
- class Train
- include InstanceCounter
- def initialize
- self.register_instance
- end
- end
- train1 = Train.new
- train2 = Train.new
- puts Train.instances # => 2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement