123456789_123456789_123456789_123456789_123456789_

Class: ActiveRecord::AttributeMethods::AttributeMethodCache

Relationships & Source Files
Inherits: Object
Defined in: activerecord/lib/active_record/attribute_methods.rb

Class Method Summary

Instance Method Summary

Constructor Details

.newAttributeMethodCache

[ GitHub ]

  
# File 'activerecord/lib/active_record/attribute_methods.rb', line 38

def initialize
  @module = Module.new
  @method_cache = ThreadSafe::Cache.new
end

Instance Method Details

#[](name)

[ GitHub ]

  
# File 'activerecord/lib/active_record/attribute_methods.rb', line 43

def [](name)
  @method_cache.compute_if_absent(name) do
    safe_name = name.unpack('h*').first
    temp_method = "__temp__#{safe_name}"
    ActiveRecord::AttributeMethods::AttrNames.set_name_cache safe_name, name
    @module.module_eval method_body(temp_method, safe_name), __FILE__, __LINE__
    @module.instance_method temp_method
  end
end