reduce the amount of code Ruby has to parse

This commit is contained in:
Aaron Patterson 2013-07-02 17:47:56 -07:00
parent 7e6ea012d2
commit 127d16e0be

@ -52,16 +52,21 @@ def cache_attribute?(attr_name)
# 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