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.
-
#clear_persistence_options(klass) ⇒ true
Clear out all the persistence options.
-
#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?.
-
#persistence_options(klass) ⇒ Hash
Get the persistence options for 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_persistence_options(klass, options) ⇒ Hash
Set the persistence options on 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?
358 359 360 |
# File 'lib/mongoid/threaded.rb', line 358 def autosaved?(document) autosaves_for(document.class).include?(document.id) end |
#autosaves ⇒ Hash
Get all autosaves on the current thread.
384 385 386 |
# File 'lib/mongoid/threaded.rb', line 384 def autosaves Thread.current["[mongoid]:autosaves"] ||= {} end |
#autosaves_for(klass) ⇒ Array
Get all autosaves on the current thread for the class.
410 411 412 |
# File 'lib/mongoid/threaded.rb', line 410 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 |
#clear_persistence_options(klass) ⇒ true
Clear out all the persistence options.
139 140 141 142 |
# File 'lib/mongoid/threaded.rb', line 139 def (klass) Thread.current["[mongoid][#{klass}]:persistence-options"] = nil true 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.
304 305 306 307 308 |
# File 'lib/mongoid/threaded.rb', line 304 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.
203 204 205 206 207 208 209 210 211 |
# File 'lib/mongoid/threaded.rb', line 203 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.
224 225 226 227 228 229 230 231 232 |
# File 'lib/mongoid/threaded.rb', line 224 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.
152 153 154 |
# File 'lib/mongoid/threaded.rb', line 152 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.
164 165 166 |
# File 'lib/mongoid/threaded.rb', line 164 def exit_validate(document) validations_for(document.class).delete_one(document.id) end |
#identity_map ⇒ IdentityMap
Get the identity map off the current thread.
176 177 178 |
# File 'lib/mongoid/threaded.rb', line 176 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?
188 189 190 |
# File 'lib/mongoid/threaded.rb', line 188 def identity_map_enabled? Thread.current["[mongoid]:identity-map-enabled"] != false end |
#persistence_options(klass) ⇒ Hash
Get the persistence options for the current thread.
244 245 246 |
# File 'lib/mongoid/threaded.rb', line 244 def (klass) Thread.current["[mongoid][#{klass}]:persistence-options"] end |
#scope_stack ⇒ Hash
Get the mongoid scope stack for chained criteria.
344 345 346 |
# File 'lib/mongoid/threaded.rb', line 344 def scope_stack Thread.current["[mongoid]:scope-stack"] ||= {} end |
#selection(criteria_instance_id) ⇒ Hash
Get the field selection options from the current thread.
273 274 275 276 |
# File 'lib/mongoid/threaded.rb', line 273 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.
318 319 320 |
# File 'lib/mongoid/threaded.rb', line 318 def session_override Thread.current["[mongoid]:session-override"] end |
#session_override=(name) ⇒ String, Symbol
Set the global session override.
332 333 334 |
# File 'lib/mongoid/threaded.rb', line 332 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_persistence_options(klass, options) ⇒ Hash
Set the persistence options on the current thread.
259 260 261 |
# File 'lib/mongoid/threaded.rb', line 259 def (klass, ) Thread.current["[mongoid][#{klass}]:persistence-options"] = end |
#set_selection(criteria_instance_id, value) ⇒ Hash
Set the field selection on the current thread.
289 290 291 292 |
# File 'lib/mongoid/threaded.rb', line 289 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?
372 373 374 |
# File 'lib/mongoid/threaded.rb', line 372 def validated?(document) validations_for(document.class).include?(document.id) end |
#validations ⇒ Hash
Get all validations on the current thread.
396 397 398 |
# File 'lib/mongoid/threaded.rb', line 396 def validations Thread.current["[mongoid]:validations"] ||= {} end |
#validations_for(klass) ⇒ Array
Get all validations on the current thread for the class.
423 424 425 |
# File 'lib/mongoid/threaded.rb', line 423 def validations_for(klass) validations[klass] ||= [] end |