Module: Mongoid::Threaded
- Extended by:
- Gem::Deprecate, 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
Constant Summary collapse
- DATABASE_OVERRIDE_KEY =
"[mongoid]:db-override"
- CLIENTS_KEY =
Constant for the key to store clients.
"[mongoid]:clients"
- CLIENT_OVERRIDE_KEY =
The key to override the client.
"[mongoid]:client-override"
- CURRENT_SCOPE_KEY =
The key for the current thread’s scope stack.
"[mongoid]:current-scope"
- AUTOSAVES_KEY =
"[mongoid]:autosaves"
- VALIDATIONS_KEY =
"[mongoid]:validations"
- STACK_KEYS =
Hash.new do |hash, key| hash[key] = "[mongoid]:#{key}-stack" end
- BIND =
'bind'.freeze
- ASSIGN =
'assign'.freeze
- BUILD =
'build'.freeze
- LOAD =
'load'.freeze
- CREATE =
'create'.freeze
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.
-
#client_override ⇒ String, Symbol
(also: #session_override)
Get the global client override.
-
#client_override=(name) ⇒ String, Symbol
(also: #session_override=)
Set the global client override.
-
#current_scope ⇒ Criteria
Get the current Mongoid scope.
-
#current_scope=(scope) ⇒ Criteria
Set the current Mongoid scope.
-
#database_override ⇒ String, Symbol
Get the global database override.
-
#database_override=(name) ⇒ String, Symbol
Set the global database override.
-
#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.
-
#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?
233 234 235 |
# File 'lib/mongoid/threaded.rb', line 233 def autosaved?(document) autosaves_for(document.class).include?(document._id) end |
#autosaves ⇒ Hash
Get all autosaves on the current thread.
259 260 261 |
# File 'lib/mongoid/threaded.rb', line 259 def autosaves Thread.current[AUTOSAVES_KEY] ||= {} end |
#autosaves_for(klass) ⇒ Array
Get all autosaves on the current thread for the class.
285 286 287 |
# File 'lib/mongoid/threaded.rb', line 285 def autosaves_for(klass) autosaves[klass] ||= [] end |
#begin_autosave(document) ⇒ Object
Begin autosaving a document on the current thread.
127 128 129 |
# File 'lib/mongoid/threaded.rb', line 127 def begin_autosave(document) autosaves_for(document.class).push(document._id) end |
#begin_execution(name) ⇒ true
Begin entry into a named thread local stack.
47 48 49 |
# File 'lib/mongoid/threaded.rb', line 47 def begin_execution(name) stack(name).push(true) end |
#begin_validate(document) ⇒ Object
Begin validating a document on the current thread.
139 140 141 |
# File 'lib/mongoid/threaded.rb', line 139 def begin_validate(document) validations_for(document.class).push(document._id) end |
#client_override ⇒ String, Symbol Also known as: session_override
Get the global client override.
175 176 177 |
# File 'lib/mongoid/threaded.rb', line 175 def client_override Thread.current[CLIENT_OVERRIDE_KEY] end |
#client_override=(name) ⇒ String, Symbol Also known as: session_override=
Set the global client override.
191 192 193 |
# File 'lib/mongoid/threaded.rb', line 191 def client_override=(name) Thread.current[CLIENT_OVERRIDE_KEY] = name end |
#current_scope ⇒ Criteria
Get the current Mongoid scope.
205 206 207 |
# File 'lib/mongoid/threaded.rb', line 205 def current_scope Thread.current[CURRENT_SCOPE_KEY] end |
#current_scope=(scope) ⇒ Criteria
Set the current Mongoid scope.
219 220 221 |
# File 'lib/mongoid/threaded.rb', line 219 def current_scope=(scope) Thread.current[CURRENT_SCOPE_KEY] = scope end |
#database_override ⇒ String, Symbol
Get the global database override.
59 60 61 |
# File 'lib/mongoid/threaded.rb', line 59 def database_override Thread.current[DATABASE_OVERRIDE_KEY] end |
#database_override=(name) ⇒ String, Symbol
Set the global database override.
73 74 75 |
# File 'lib/mongoid/threaded.rb', line 73 def database_override=(name) Thread.current[DATABASE_OVERRIDE_KEY] = name end |
#executing?(name) ⇒ true
Are in the middle of executing the named stack
87 88 89 |
# File 'lib/mongoid/threaded.rb', line 87 def executing?(name) !stack(name).empty? end |
#exit_autosave(document) ⇒ Object
Exit autosaving a document on the current thread.
151 152 153 |
# File 'lib/mongoid/threaded.rb', line 151 def exit_autosave(document) autosaves_for(document.class).delete_one(document._id) end |
#exit_execution(name) ⇒ true
Exit from a named thread local stack.
101 102 103 |
# File 'lib/mongoid/threaded.rb', line 101 def exit_execution(name) stack(name).pop end |
#exit_validate(document) ⇒ Object
Exit validating a document on the current thread.
163 164 165 |
# File 'lib/mongoid/threaded.rb', line 163 def exit_validate(document) validations_for(document.class).delete_one(document._id) end |
#stack(name) ⇒ Array
Get the named stack.
115 116 117 |
# File 'lib/mongoid/threaded.rb', line 115 def stack(name) Thread.current[STACK_KEYS[name]] ||= [] end |
#validated?(document) ⇒ true, false
Is the document validated on the current thread?
247 248 249 |
# File 'lib/mongoid/threaded.rb', line 247 def validated?(document) validations_for(document.class).include?(document._id) end |
#validations ⇒ Hash
Get all validations on the current thread.
271 272 273 |
# File 'lib/mongoid/threaded.rb', line 271 def validations Thread.current[VALIDATIONS_KEY] ||= {} end |
#validations_for(klass) ⇒ Array
Get all validations on the current thread for the class.
298 299 300 |
# File 'lib/mongoid/threaded.rb', line 298 def validations_for(klass) validations[klass] ||= [] end |