Module: Mongoid::Threaded
- Extended by:
- Threaded
- Included in:
- Threaded
- Defined in:
- lib/mongoid/threaded.rb,
lib/mongoid/threaded/lifecycle.rb
Overview
This module contains logic for easy access to objects that have a lifecycle on the current thread.
Defined Under Namespace
Modules: Lifecycle
Instance Method Summary collapse
-
#autosaved?(document) ⇒ true, false
Is the document autosaved on the current thread?.
-
#autosaves ⇒ Hash
Get all autosaves on the current thread.
-
#autosaves_for(klass) ⇒ Array
Get all autosaves on the current thread for the class.
-
#begin_autosave(document) ⇒ Object
Begin autosaving a document on the current thread.
-
#begin_execution(name) ⇒ true
Begin entry into a named thread local stack.
-
#begin_validate(document) ⇒ Object
Begin validating a document on the current thread.
-
#database_override ⇒ String, Symbol
Get the global database override.
-
#database_override=(name) ⇒ String, Symbol
Set the global database override.
-
#delete_selection(criteria_instance_id) ⇒ Boolean
Delete the field selection on the current thread.
-
#disable_identity_map(option) ⇒ Object
Disable the identity map on either the current thread or all threads.
-
#enable_identity_map(option) ⇒ Object
Enable the identity map on either the current thread or all threads.
-
#executing?(name) ⇒ true
Are in the middle of executing the named stack.
-
#exit_autosave(document) ⇒ Object
Exit autosaving a document on the current thread.
-
#exit_execution(name) ⇒ true
Exit from a named thread local stack.
-
#exit_validate(document) ⇒ Object
Exit validating a document on the current thread.
-
#identity_map ⇒ IdentityMap
Get the identity map off the current thread.
-
#identity_map_enabled? ⇒ true, false
Is the identity map enabled on the current thread?.
-
#scope_stack ⇒ Hash
Get the mongoid scope stack for chained criteria.
-
#selection(criteria_instance_id) ⇒ Hash
Get the field selection options from the current thread.
-
#session_override ⇒ String, Symbol
Get the global session override.
-
#session_override=(name) ⇒ String, Symbol
Set the global session override.
-
#sessions ⇒ Hash
Get the database sessions from the current thread.
-
#set_selection(criteria_instance_id, value) ⇒ Hash
Set the field selection on the current thread.
-
#stack(name) ⇒ Array
Get the named stack.
-
#validated?(document) ⇒ true, false
Is the document validated on the current thread?.
-
#validations ⇒ Hash
Get all validations on the current thread.
-
#validations_for(klass) ⇒ Array
Get all validations on the current thread for the class.
Instance Method Details
#autosaved?(document) ⇒ true, false
Is the document autosaved on the current thread?
314 315 316 |
# File 'lib/mongoid/threaded.rb', line 314 def autosaved?(document) autosaves_for(document.class).include?(document.id) end |
#autosaves ⇒ Hash
Get all autosaves on the current thread.
340 341 342 |
# File 'lib/mongoid/threaded.rb', line 340 def autosaves Thread.current["[mongoid]:autosaves"] ||= {} end |
#autosaves_for(klass) ⇒ Array
Get all autosaves on the current thread for the class.
366 367 368 |
# File 'lib/mongoid/threaded.rb', line 366 def autosaves_for(klass) autosaves[klass] ||= [] end |
#begin_autosave(document) ⇒ Object
Begin autosaving a document on the current thread.
113 114 115 |
# File 'lib/mongoid/threaded.rb', line 113 def begin_autosave(document) autosaves_for(document.class).push(document.id) end |
#begin_execution(name) ⇒ true
Begin entry into a named thread local stack.
21 22 23 |
# File 'lib/mongoid/threaded.rb', line 21 def begin_execution(name) stack(name).push(true) end |
#begin_validate(document) ⇒ Object
Begin validating a document on the current thread.
125 126 127 |
# File 'lib/mongoid/threaded.rb', line 125 def begin_validate(document) validations_for(document.class).push(document.id) end |
#database_override ⇒ String, Symbol
Get the global database override.
33 34 35 |
# File 'lib/mongoid/threaded.rb', line 33 def database_override Thread.current["[mongoid]:db-override"] end |
#database_override=(name) ⇒ String, Symbol
Set the global database override.
47 48 49 |
# File 'lib/mongoid/threaded.rb', line 47 def database_override=(name) Thread.current["[mongoid]:db-override"] = name end |
#delete_selection(criteria_instance_id) ⇒ Boolean
Delete the field selection on the current thread.
260 261 262 263 264 |
# File 'lib/mongoid/threaded.rb', line 260 def delete_selection(criteria_instance_id) selections = Thread.current["[mongoid][selections]"] return false unless selections !!selections.delete(criteria_instance_id) end |
#disable_identity_map(option) ⇒ Object
Disable the identity map on either the current thread or all threads.
188 189 190 191 192 193 194 195 196 |
# File 'lib/mongoid/threaded.rb', line 188 def disable_identity_map(option) if option == :all Thread.list.each do |thread| thread["[mongoid]:identity-map-enabled"] = false end else Thread.current["[mongoid]:identity-map-enabled"] = false end end |
#enable_identity_map(option) ⇒ Object
Enable the identity map on either the current thread or all threads.
209 210 211 212 213 214 215 216 217 |
# File 'lib/mongoid/threaded.rb', line 209 def enable_identity_map(option) if option == :all Thread.list.each do |thread| thread["[mongoid]:identity-map-enabled"] = true end else Thread.current["[mongoid]:identity-map-enabled"] = true end end |
#executing?(name) ⇒ true
Are in the middle of executing the named stack
73 74 75 |
# File 'lib/mongoid/threaded.rb', line 73 def executing?(name) !stack(name).empty? end |
#exit_autosave(document) ⇒ Object
Exit autosaving a document on the current thread.
137 138 139 |
# File 'lib/mongoid/threaded.rb', line 137 def exit_autosave(document) autosaves_for(document.class).delete_one(document.id) end |
#exit_execution(name) ⇒ true
Exit from a named thread local stack.
87 88 89 |
# File 'lib/mongoid/threaded.rb', line 87 def exit_execution(name) stack(name).pop end |
#exit_validate(document) ⇒ Object
Exit validating a document on the current thread.
149 150 151 |
# File 'lib/mongoid/threaded.rb', line 149 def exit_validate(document) validations_for(document.class).delete_one(document.id) end |
#identity_map ⇒ IdentityMap
Get the identity map off the current thread.
161 162 163 |
# File 'lib/mongoid/threaded.rb', line 161 def identity_map Thread.current["[mongoid]:identity-map"] ||= IdentityMap.new end |
#identity_map_enabled? ⇒ true, false
Is the identity map enabled on the current thread?
173 174 175 |
# File 'lib/mongoid/threaded.rb', line 173 def identity_map_enabled? Thread.current["[mongoid]:identity-map-enabled"] != false end |
#scope_stack ⇒ Hash
Get the mongoid scope stack for chained criteria.
300 301 302 |
# File 'lib/mongoid/threaded.rb', line 300 def scope_stack Thread.current["[mongoid]:scope-stack"] ||= {} end |
#selection(criteria_instance_id) ⇒ Hash
Get the field selection options from the current thread.
229 230 231 232 |
# File 'lib/mongoid/threaded.rb', line 229 def selection(criteria_instance_id) selections = Thread.current["[mongoid][selections]"] selections[criteria_instance_id] if selections end |
#session_override ⇒ String, Symbol
Get the global session override.
274 275 276 |
# File 'lib/mongoid/threaded.rb', line 274 def session_override Thread.current["[mongoid]:session-override"] end |
#session_override=(name) ⇒ String, Symbol
Set the global session override.
288 289 290 |
# File 'lib/mongoid/threaded.rb', line 288 def session_override=(name) Thread.current["[mongoid]:session-override"] = name end |
#sessions ⇒ Hash
Get the database sessions from the current thread.
59 60 61 |
# File 'lib/mongoid/threaded.rb', line 59 def sessions Thread.current["[mongoid]:sessions"] ||= {} end |
#set_selection(criteria_instance_id, value) ⇒ Hash
Set the field selection on the current thread.
245 246 247 248 |
# File 'lib/mongoid/threaded.rb', line 245 def set_selection(criteria_instance_id, value) Thread.current["[mongoid][selections]"] ||= {} Thread.current["[mongoid][selections]"][criteria_instance_id] = value end |
#stack(name) ⇒ Array
Get the named stack.
101 102 103 |
# File 'lib/mongoid/threaded.rb', line 101 def stack(name) Thread.current["[mongoid]:#{name}-stack"] ||= [] end |
#validated?(document) ⇒ true, false
Is the document validated on the current thread?
328 329 330 |
# File 'lib/mongoid/threaded.rb', line 328 def validated?(document) validations_for(document.class).include?(document.id) end |
#validations ⇒ Hash
Get all validations on the current thread.
352 353 354 |
# File 'lib/mongoid/threaded.rb', line 352 def validations Thread.current["[mongoid]:validations"] ||= {} end |
#validations_for(klass) ⇒ Array
Get all validations on the current thread for the class.
379 380 381 |
# File 'lib/mongoid/threaded.rb', line 379 def validations_for(klass) validations[klass] ||= [] end |