diff options
author | Emilio Tagua <miloops@gmail.com> | 2010-11-18 19:14:02 -0300 |
---|---|---|
committer | Emilio Tagua <miloops@gmail.com> | 2010-11-19 19:09:01 -0300 |
commit | d9c0340ac3da67ae880d3a53c8bca8169daf0f29 (patch) | |
tree | 7b92e6c9a9dffb57276ab9dbd0b16a7ea4c57d3e | |
parent | a12bb7140fa95b4a21b7680b7a05280ccdc612d6 (diff) | |
download | rails-d9c0340ac3da67ae880d3a53c8bca8169daf0f29.tar.gz rails-d9c0340ac3da67ae880d3a53c8bca8169daf0f29.tar.bz2 rails-d9c0340ac3da67ae880d3a53c8bca8169daf0f29.zip |
IM enable should be kept in current thread.
-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 |