From 8601f733af3311e3b0ebb1f517432593c9b0fedd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Mon, 30 Jul 2012 08:19:15 +0200 Subject: Revert "DRY class_attribute code" class_attribute is a building block and using define_method can be much slower for such basic method definitions. This reverts commit d59208d7032e2be855a89ad8d4685cc08dd7cdb3. --- activesupport/lib/active_support/core_ext/class/attribute.rb | 9 ++++++--- 1 file 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 -- cgit v1.2.3