Module: ActiveRecord::Base::ThreadIdentityMap::ClassMethods
- Included in:
- ActiveRecord::Base
- Defined in:
- lib/identity_map/cache.rb
Instance Method Summary collapse
-
#create_identity_map ⇒ Object
Creates new identity map and put it in thread local storage.
-
#drop_identity_map ⇒ Object
Remove identity map from thread local storage.
-
#with_id_map(fresh = true) ⇒ Object
Execute block with identity map.
-
#without_id_map ⇒ Object
Execute block with identity map turned off.
Instance Method Details
#create_identity_map ⇒ Object
Creates new identity map and put it in thread local storage
For most use cases with_id_map
should be used instead.
Usage:
ActiveRecord::Base.create_identity_map
50 51 52 |
# File 'lib/identity_map/cache.rb', line 50 def create_identity_map set_thread_id_map IdMap.new end |
#drop_identity_map ⇒ Object
Remove identity map from thread local storage
For most use cases without_id_map
should be used instead.
Usage:
ActiveRecord::Base.drop_identity_map
60 61 62 |
# File 'lib/identity_map/cache.rb', line 60 def drop_identity_map set_thread_id_map nil end |
#with_id_map(fresh = true) ⇒ Object
Execute block with identity map.
If it called with true
, then new instance of identity map would be used regardless of any present.
If it called with false
, then it only ensures that identity map created if absent.
Default is true
Usage:
ActiveRecord::Base.with_id_map do
#do_some_actions
end
77 78 79 80 81 82 83 |
# File 'lib/identity_map/cache.rb', line 77 def with_id_map( fresh = true) old = thread_id_map create_identity_map if fresh || old.nil? yield ensure set_thread_id_map old end |
#without_id_map ⇒ Object
Execute block with identity map turned off.
Usage:
ActiveRecord::Base.without_id_map do
#do_some_actions
end
91 92 93 94 95 96 97 |
# File 'lib/identity_map/cache.rb', line 91 def without_id_map old = thread_id_map drop_identity_map yield ensure set_thread_id_map old end |