Module: Heredity::InheritableClassInstanceVariables::ClassMethods
- Defined in:
- lib/heredity/inheritable_class_instance_variables.rb
Instance Method Summary collapse
- #_inheritable_class_instance_variables ⇒ Object
- #inheritable_attributes(*args) ⇒ Object
- #inherited(klass) ⇒ Object
Instance Method Details
#_inheritable_class_instance_variables ⇒ Object
24 25 26 |
# File 'lib/heredity/inheritable_class_instance_variables.rb', line 24 def _inheritable_class_instance_variables @_inheritable_class_instance_variables end |
#inheritable_attributes(*args) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/heredity/inheritable_class_instance_variables.rb', line 28 def inheritable_attributes(*args) Thread.exclusive do args.flatten.compact.uniq.each do |class_instance_variable| unless @_inheritable_class_instance_variables.include?(class_instance_variable) @_inheritable_class_instance_variables << class_instance_variable end end @_inheritable_class_instance_variables.each do |attr_symbol| unless self.respond_to?("#{attr_symbol}") class_eval %Q{ class << self; attr_reader :#{attr_symbol}; end } end unless self.respond_to?("#{attr_symbol}=") class_eval %Q{ class << self; attr_writer :#{attr_symbol}; end } end end @_inheritable_class_instance_variables end end |
#inherited(klass) ⇒ Object
54 55 56 57 58 59 60 61 62 63 |
# File 'lib/heredity/inheritable_class_instance_variables.rb', line 54 def inherited(klass) super # ActiveRecord needs the inherited hook to setup fields Thread.exclusive do @_inheritable_class_instance_variables.each do |attribute| attr_sym = :"@#{attribute}" klass.instance_variable_set(attr_sym, self.instance_variable_get(attr_sym)) end end end |