module Composable::Core::InheritableAttributes::ClassMethods
Public Instance Methods
inheritable_attributes(*attributes)
click to toggle source
# File lib/composable/core/inheritable_attributes.rb, line 9 def inheritable_attributes(*attributes) options = attributes.extract_options! @inheritable_attributes ||= [{attribute: :inheritable_attributes}] attributes.each do |attribute| @inheritable_attributes << {attribute: attribute, default: options[:default]} class_eval <<-RUBY, __FILE__, __LINE__ + 1 class << self; attr_accessor :#{attribute} end RUBY send("#{attribute}=", options[:default]) unless options[:default].nil? end @inheritable_attributes end
inherited(subclass)
click to toggle source
Calls superclass method
# File lib/composable/core/inheritable_attributes.rb, line 41 def inherited(subclass) super Array(@inheritable_attributes).each do |hash| inheritable_attribute = hash[:attribute] instance_name = "@#{inheritable_attribute}" instance_value = instance_variable_get(instance_name).deep_dup subclass.instance_variable_set(instance_name, instance_value || hash[:default].deep_dup) end Array(@uninheritable_attributes).each do |hash| uninheritable_attribute = hash[:attribute] instance_name = "@#{uninheritable_attribute}" if instance_name == "@uninheritable_attributes" instance_value = instance_variable_get(instance_name).deep_dup subclass.instance_variable_set(instance_name, instance_value) else subclass.instance_variable_set(instance_name, hash[:default].deep_dup) end end end
uninheritable_attributes(*attributes)
click to toggle source
# File lib/composable/core/inheritable_attributes.rb, line 24 def uninheritable_attributes(*attributes) options = attributes.extract_options! @uninheritable_attributes ||= [{attribute: :uninheritable_attributes}] attributes.each do |attribute| @uninheritable_attributes << {attribute: attribute, default: options[:default]} class_eval <<-RUBY, __FILE__, __LINE__ + 1 class << self; attr_accessor :#{attribute} end RUBY send("#{attribute}=", options[:default]) unless options[:default].nil? end @uninheritable_attributes end