diff options
Diffstat (limited to 'activesupport')
-rw-r--r-- | activesupport/lib/active_support/core_ext/class/attribute.rb | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/activesupport/lib/active_support/core_ext/class/attribute.rb b/activesupport/lib/active_support/core_ext/class/attribute.rb index da0a12136c..7b6f8ab0a1 100644 --- a/activesupport/lib/active_support/core_ext/class/attribute.rb +++ b/activesupport/lib/active_support/core_ext/class/attribute.rb @@ -79,12 +79,14 @@ class Class def self.#{name}=(val) singleton_class.class_eval do - redefine_method(:#{name}) { val } + remove_possible_method(:#{name}) + define_method(:#{name}) { val } end if singleton_class? class_eval do - redefine_method(:#{name}) do + remove_possible_method(:#{name}) + def #{name} defined?(@#{name}) ? @#{name} : singleton_class.#{name} end end @@ -93,7 +95,8 @@ class Class end if instance_reader - redefine_method(:#{name}) do + remove_possible_method :#{name} + def #{name} defined?(@#{name}) ? @#{name} : self.class.#{name} end |