Class: Class
- Defined in:
- lib/carrierwave/core_ext/inheritable_attributes.rb
Overview
Retain for backward compatibility. Methods are now included in Class.
Instance Method Summary collapse
-
#extlib_inheritable_accessor(*syms, &block) ⇒ Array[#to_s]
Defines class-level inheritable attribute accessor.
-
#extlib_inheritable_reader(*ivars, &block) ⇒ Array[#to_s]
Defines class-level inheritable attribute reader.
-
#extlib_inheritable_writer(*ivars) ⇒ Array[#to_s]
Defines class-level inheritable attribute writer.
Instance Method Details
#extlib_inheritable_accessor(*syms, &block) ⇒ Array[#to_s]
Defines class-level inheritable attribute accessor. Attributes are available to subclasses, each subclass has a copy of parent’s attribute.
define inheritable accessor for.
104 105 106 107 |
# File 'lib/carrierwave/core_ext/inheritable_attributes.rb', line 104 def extlib_inheritable_accessor(*syms, &block) extlib_inheritable_reader(*syms) extlib_inheritable_writer(*syms, &block) end |
#extlib_inheritable_reader(*ivars, &block) ⇒ Array[#to_s]
Do we want to block instance_reader via :instance_reader => false
It would be preferable that we do something with a Hash passed in
Defines class-level inheritable attribute reader. Attributes are available to subclasses, each subclass has a copy of parent’s attribute.
(error out or do the same as other methods above) instead of silently moving on). In particular, this makes the return value of this function less useful.
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/carrierwave/core_ext/inheritable_attributes.rb', line 41 def extlib_inheritable_reader(*ivars, &block) = ivars. ivars.each do |ivar| self.class_eval <<-RUBY, __FILE__, __LINE__ + 1 def self.#{ivar} return @#{ivar} if self.object_id == #{self.object_id} || defined?(@#{ivar}) ivar = superclass.#{ivar} return nil if ivar.nil? && !#{self}.instance_variable_defined?("@#{ivar}") @#{ivar} = ivar.duplicable? ? ivar.dup : ivar end RUBY unless [:instance_reader] == false self.class_eval <<-RUBY, __FILE__, __LINE__ + 1 def #{ivar} self.class.#{ivar} end RUBY end instance_variable_set(:"@#{ivar}", yield) if block_given? end end |
#extlib_inheritable_writer(*ivars) ⇒ Array[#to_s]
We need a style for class_eval <<-HEREDOC. I’d like to make it
Defines class-level inheritable attribute writer. Attributes are available to subclasses, each subclass has a copy of parent’s attribute.
define inheritable writer for. class_eval(<<-RUBY, __FILE__, __LINE__), but we should codify it somewhere.
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/carrierwave/core_ext/inheritable_attributes.rb', line 76 def extlib_inheritable_writer(*ivars) = ivars. ivars.each do |ivar| self.class_eval <<-RUBY, __FILE__, __LINE__ + 1 def self.#{ivar}=(obj) @#{ivar} = obj end RUBY unless [:instance_writer] == false self.class_eval <<-RUBY, __FILE__, __LINE__ + 1 def #{ivar}=(obj) self.class.#{ivar} = obj end RUBY end self.send("#{ivar}=", yield) if block_given? end end |