Module: Toy::IdentityMap
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/toy/identity_map.rb
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
- .clear ⇒ Object
- .enabled ⇒ Object
- .enabled=(flag) ⇒ Object
- .enabled? ⇒ Boolean
- .include?(object) ⇒ Boolean
- .repository ⇒ Object
- .use ⇒ Object
- .without ⇒ Object
Instance Method Summary collapse
Class Method Details
.clear ⇒ Object
22 23 24 |
# File 'lib/toy/identity_map.rb', line 22 def self.clear repository.clear end |
.enabled ⇒ Object
10 11 12 |
# File 'lib/toy/identity_map.rb', line 10 def self.enabled Thread.current[:toystore_identity_map_enabled] end |
.enabled=(flag) ⇒ Object
6 7 8 |
# File 'lib/toy/identity_map.rb', line 6 def self.enabled=(flag) Thread.current[:toystore_identity_map_enabled] = flag end |
.enabled? ⇒ Boolean
14 15 16 |
# File 'lib/toy/identity_map.rb', line 14 def self.enabled? enabled == true end |
.include?(object) ⇒ Boolean
26 27 28 |
# File 'lib/toy/identity_map.rb', line 26 def self.include?(object) repository.keys.include?(object.id) end |
.repository ⇒ Object
18 19 20 |
# File 'lib/toy/identity_map.rb', line 18 def self.repository Thread.current[:toystore_identity_map] ||= {} end |
.use ⇒ Object
30 31 32 33 34 35 36 37 |
# File 'lib/toy/identity_map.rb', line 30 def self.use old, self.enabled = enabled, true yield if block_given? ensure self.enabled = old clear end |
.without ⇒ Object
39 40 41 42 43 44 45 |
# File 'lib/toy/identity_map.rb', line 39 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
74 75 76 |
# File 'lib/toy/identity_map.rb', line 74 def add_to_identity_map IdentityMap.repository[id] = self if IdentityMap.enabled? end |
#delete ⇒ Object
70 71 72 |
# File 'lib/toy/identity_map.rb', line 70 def delete(*) super.tap { remove_from_identity_map } end |
#remove_from_identity_map ⇒ Object
78 79 80 |
# File 'lib/toy/identity_map.rb', line 78 def remove_from_identity_map IdentityMap.repository.delete(id) if IdentityMap.enabled? end |
#save ⇒ Object
66 67 68 |
# File 'lib/toy/identity_map.rb', line 66 def save(*) super.tap { |result| add_to_identity_map if result } end |