Module: MongoMapper::Plugins::IdentityMap
- Extended by:
- ActiveSupport::Concern
- Included in:
- Document
- Defined in:
- lib/mongo_mapper/plugins/identity_map.rb
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
- .clear ⇒ Object
- .enabled ⇒ Object
- .enabled=(flag) ⇒ Object
- .enabled? ⇒ Boolean
- .include?(document) ⇒ Boolean
- .key(model, id) ⇒ Object
- .repository ⇒ Object
- .use ⇒ Object
- .without ⇒ Object
Instance Method Summary collapse
- #add_to_identity_map ⇒ Object
- #delete ⇒ Object
- #remove_from_identity_map ⇒ Object
- #save(*args) ⇒ Object
Class Method Details
.clear ⇒ Object
25 26 27 |
# File 'lib/mongo_mapper/plugins/identity_map.rb', line 25 def self.clear repository.clear end |
.enabled ⇒ Object
13 14 15 |
# File 'lib/mongo_mapper/plugins/identity_map.rb', line 13 def self.enabled Thread.current[:mongo_mapper_identity_map_enabled] end |
.enabled=(flag) ⇒ Object
9 10 11 |
# File 'lib/mongo_mapper/plugins/identity_map.rb', line 9 def self.enabled=(flag) Thread.current[:mongo_mapper_identity_map_enabled] = flag end |
.enabled? ⇒ Boolean
17 18 19 |
# File 'lib/mongo_mapper/plugins/identity_map.rb', line 17 def self.enabled? enabled == true end |
.include?(document) ⇒ Boolean
29 30 31 |
# File 'lib/mongo_mapper/plugins/identity_map.rb', line 29 def self.include?(document) repository.key?(IdentityMap.key(document.class, document._id)) end |
.key(model, id) ⇒ Object
33 34 35 |
# File 'lib/mongo_mapper/plugins/identity_map.rb', line 33 def self.key(model, id) "#{model.single_collection_root.name}:#{id}" end |
.repository ⇒ Object
21 22 23 |
# File 'lib/mongo_mapper/plugins/identity_map.rb', line 21 def self.repository Thread.current[:mongo_mapper_identity_map] ||= {} end |
.use ⇒ Object
37 38 39 40 41 42 43 44 |
# File 'lib/mongo_mapper/plugins/identity_map.rb', line 37 def self.use old, self.enabled = enabled, true yield if block_given? ensure self.enabled = old clear end |
.without ⇒ Object
46 47 48 49 50 51 52 |
# File 'lib/mongo_mapper/plugins/identity_map.rb', line 46 def self.without old, self.enabled = enabled, false yield if block_given? ensure self.enabled = old end |
Instance Method Details
#add_to_identity_map ⇒ Object
94 95 96 97 98 99 |
# File 'lib/mongo_mapper/plugins/identity_map.rb', line 94 def add_to_identity_map if IdentityMap.enabled? key = IdentityMap.key(self.class, _id) IdentityMap.repository[key] = self end end |
#delete ⇒ Object
90 91 92 |
# File 'lib/mongo_mapper/plugins/identity_map.rb', line 90 def delete super.tap { remove_from_identity_map } end |
#remove_from_identity_map ⇒ Object
101 102 103 104 105 106 |
# File 'lib/mongo_mapper/plugins/identity_map.rb', line 101 def remove_from_identity_map if IdentityMap.enabled? key = IdentityMap.key(self.class, _id) IdentityMap.repository.delete(key) end end |
#save(*args) ⇒ Object
86 87 88 |
# File 'lib/mongo_mapper/plugins/identity_map.rb', line 86 def save(*args) super.tap { |result| add_to_identity_map if result } end |