diff options
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/lib/active_record/identity_map.rb | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/activerecord/lib/active_record/identity_map.rb b/activerecord/lib/active_record/identity_map.rb index 3ba75a7b59..f8b65294f2 100644 --- a/activerecord/lib/active_record/identity_map.rb +++ b/activerecord/lib/active_record/identity_map.rb @@ -18,14 +18,21 @@ module ActiveRecord extend ActiveSupport::Concern class << self - attr_accessor :enabled + def enabled=(flag) + Thread.current[:identity_map_enabled] = flag + end + + def enabled + Thread.current[:identity_map_enabled] + end + alias enabled? enabled def repository Thread.current[:identity_map] ||= Hash.new { |h,k| h[k] = {} } end def use - old, self.enabled = self.enabled, true + old, self.enabled = enabled, true yield if block_given? ensure @@ -34,7 +41,7 @@ module ActiveRecord end def without - old, self.enabled = self.enabled, false + old, self.enabled = enabled, false yield if block_given? ensure @@ -61,12 +68,8 @@ module ActiveRecord def clear repository.clear end - - alias enabled? enabled end - self.enabled = false - module InstanceMethods # Reinitialize an Identity Map model object from +coder+. # +coder+ must contain the attributes necessary for initializing an empty |