From 127d16e0be9dc79c5c07359c101a2b2dfb1c9f03 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Tue, 2 Jul 2013 17:47:56 -0700 Subject: reduce the amount of code Ruby has to parse --- activerecord/lib/active_record/attribute_methods/read.rb | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'activerecord') diff --git a/activerecord/lib/active_record/attribute_methods/read.rb b/activerecord/lib/active_record/attribute_methods/read.rb index 8b3df3cd07..684fe2dc05 100644 --- a/activerecord/lib/active_record/attribute_methods/read.rb +++ b/activerecord/lib/active_record/attribute_methods/read.rb @@ -52,16 +52,21 @@ module ActiveRecord # key the @attributes_cache in read_attribute. def define_method_attribute(name) safe_name = name.unpack('h*').first + temp_method = "__temp__#{safe_name}" + ActiveRecord::AttributeMethods::AttrNames.set_name_cache safe_name, name generated_attribute_methods.module_eval <<-STR, __FILE__, __LINE__ + 1 - def __temp__#{safe_name} + def #{temp_method} name = ::ActiveRecord::AttributeMethods::AttrNames::ATTR_#{safe_name} read_attribute(name) { |n| missing_attribute(n, caller) } end - alias_method #{name.inspect}, :__temp__#{safe_name} - undef_method :__temp__#{safe_name} STR + + generated_attribute_methods.module_eval do + alias_method name, temp_method + undef_method temp_method + end end private -- cgit v1.2.3