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)

Instance Method Details

- (true, false) autosaved?(document)

Is the document autosaved on the current thread?

Examples:

Is the document autosaved?

Threaded.autosaved?(doc)

Parameters:

  • document (Document)

    The document to check.

Returns:

  • (true, false)

    If the document is autosaved.

Since:

  • 2.1.9



357
358
359
# File 'lib/mongoid/threaded.rb', line 357

def autosaved?(document)
  autosaves_for(document.class).include?(document.id)
end

- (Hash) autosaves

Get all autosaves on the current thread.

Examples:

Get all autosaves.

Threaded.autosaves

Returns:

  • (Hash)

    The current autosaves.

Since:

  • 3.0.0



383
384
385
# File 'lib/mongoid/threaded.rb', line 383

def autosaves
  Thread.current["[mongoid]:autosaves"] ||= {}
end

- (Array) autosaves_for(klass)

Get all autosaves on the current thread for the class.

Examples:

Get all autosaves.

Threaded.autosaves_for(Person)

Parameters:

  • The (Class)

    class to check.

Returns:

  • (Array)

    The current autosaves.

Since:

  • 3.0.0



409
410
411
# File 'lib/mongoid/threaded.rb', line 409

def autosaves_for(klass)
  autosaves[klass] ||= []
end

- (true) begin(name)

Begin entry into a named thread local stack.

Examples:

Begin entry into the stack.

Threaded.begin(:create)

Parameters:

  • name (String)

    The name of the stack

Returns:

  • (true)

    True.

Since:

  • 2.4.0



21
22
23
# File 'lib/mongoid/threaded.rb', line 21

def begin(name)
  stack(name).push(true)
end

- (Object) begin_autosave(document)

Begin autosaving a document on the current thread.

Examples:

Begin autosave.

Threaded.begin_autosave(doc)

Parameters:

  • document (Document)

    The document to autosave.

Since:

  • 3.0.0



87
88
89
# File 'lib/mongoid/threaded.rb', line 87

def begin_autosave(document)
  autosaves_for(document.class).push(document.id)
end

- (Object) begin_validate(document)

Begin validating a document on the current thread.

Examples:

Begin validation.

Threaded.begin_validate(doc)

Parameters:

  • document (Document)

    The document to validate.

Since:

  • 2.1.9



99
100
101
# File 'lib/mongoid/threaded.rb', line 99

def begin_validate(document)
  validations_for(document.class).push(document.id)
end

- (Object) clear_options!

Clear out all options set on a one-time basis.

Examples:

Clear out the options.

Threaded.clear_options!

Since:

  • 2.3.0



124
125
126
# File 'lib/mongoid/threaded.rb', line 124

def clear_options!
  self.timeless = false
end

- (true) clear_persistence_options(klass)

Clear out all the persistence options.

Examples:

Clear out the persistence options.

Threaded.clear_persistence_options(Band)

Parameters:

  • klass (Class)

    The model class.

Returns:

  • (true)

    true.

Since:

  • 2.0.0



113
114
115
116
# File 'lib/mongoid/threaded.rb', line 113

def clear_persistence_options(klass)
  Thread.current["[mongoid][#{klass}]:persistence-options"] = nil
  true
end

- (Object) disable_identity_map(option)

Disable the identity map on either the current thread or all threads.

Examples:

Disable the identity map on all threads.

Threaded.disable_identity_map(:all)

Disable the identity map on the current thread.

Threaded.disable_identity_map(:current)

Parameters:

  • option (Symbol)

    The disabling option.

Since:

  • 3.0.0



187
188
189
190
191
192
193
194
195
# File 'lib/mongoid/threaded.rb', line 187

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

- (Object) enable_identity_map(option)

Enable the identity map on either the current thread or all threads.

Examples:

Enable the identity map on all threads.

Threaded.enable_identity_map(:all)

Enable the identity map on the current thread.

Threaded.enable_identity_map(:current)

Parameters:

  • option (Symbol)

    The disabling option.

Since:

  • 3.0.0



208
209
210
211
212
213
214
215
216
# File 'lib/mongoid/threaded.rb', line 208

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

- (true) executing?(name)

Are in the middle of executing the named stack

Examples:

Are we in the stack execution?

Threaded.executing?(:create)

Parameters:

  • name (Symbol)

    The name of the stack

Returns:

  • (true)

    If the stack is being executed.

Since:

  • 2.4.0



47
48
49
# File 'lib/mongoid/threaded.rb', line 47

def executing?(name)
  !stack(name).empty?
end

- (true) exit(name)

Exit from a named thread local stack.

Examples:

Exit from the stack.

Threaded.exit(:create)

Parameters:

  • name (Symbol)

    The name of the stack

Returns:

  • (true)

    True.

Since:

  • 2.4.0



61
62
63
# File 'lib/mongoid/threaded.rb', line 61

def exit(name)
  stack(name).pop
end

- (Object) exit_autosave(document)

Exit autosaving a document on the current thread.

Examples:

Exit autosave.

Threaded.exit_autosave(doc)

Parameters:

  • document (Document)

    The document to autosave.

Since:

  • 3.0.0



136
137
138
# File 'lib/mongoid/threaded.rb', line 136

def exit_autosave(document)
  autosaves_for(document.class).delete_one(document.id)
end

- (Object) exit_validate(document)

Exit validating a document on the current thread.

Examples:

Exit validation.

Threaded.exit_validate(doc)

Parameters:

  • document (Document)

    The document to validate.

Since:

  • 2.1.9



148
149
150
# File 'lib/mongoid/threaded.rb', line 148

def exit_validate(document)
  validations_for(document.class).delete_one(document.id)
end

- (IdentityMap) identity_map

Get the identity map off the current thread.

Examples:

Get the identity map.

Threaded.identity_map

Returns:

Since:

  • 2.1.0



160
161
162
# File 'lib/mongoid/threaded.rb', line 160

def identity_map
  Thread.current["[mongoid]:identity-map"] ||= IdentityMap.new
end

- (true, false) identity_map_enabled?

Is the identity map enabled on the current thread?

Examples:

Is the identity map enabled?

Threaded.identity_map_enabled?

Returns:

  • (true, false)

    If the identity map is enabled.

Since:

  • 3.0.0



172
173
174
# File 'lib/mongoid/threaded.rb', line 172

def identity_map_enabled?
  Thread.current["[mongoid]:identity-map-enabled"] != false
end

- (Object) insert(name)

Get the insert consumer from the current thread.

Examples:

Get the insert consumer.

Threaded.insert

Returns:

  • (Object)

    The batch insert consumer.

Since:

  • 2.1.0



226
227
228
# File 'lib/mongoid/threaded.rb', line 226

def insert(name)
  Thread.current["[mongoid][#{name}]:insert-consumer"]
end

- (Hash) persistence_options(klass)

Get the persistence options for the current thread.

Examples:

Get the persistence options.

Threaded.persistence_options(Band)

Parameters:

  • klass (Class)

    The model class.

Returns:

  • (Hash)

    The current persistence options.

Since:

  • 2.1.0



254
255
256
# File 'lib/mongoid/threaded.rb', line 254

def persistence_options(klass)
  Thread.current["[mongoid][#{klass}]:persistence-options"]
end

- (Hash) scope_stack

Get the mongoid scope stack for chained criteria.

Examples:

Get the scope stack.

Threaded.scope_stack

Returns:

  • (Hash)

    The scope stack.

Since:

  • 2.1.0



307
308
309
# File 'lib/mongoid/threaded.rb', line 307

def scope_stack
  Thread.current["[mongoid]:scope-stack"] ||= {}
end

- (Hash) selection

Get the field selection options from the current thread.

Examples:

Get the field selection options.

Threaded.selection

Returns:

  • (Hash)

    The field selection.

Since:

  • 2.4.4



281
282
283
# File 'lib/mongoid/threaded.rb', line 281

def selection
  Thread.current["[mongoid]:selection"]
end

- (Hash) selection=(value)

Set the field selection on the current thread.

Examples:

Set the field selection.

Threaded.selection = { field: 1 }

Parameters:

  • value (Hash)

    The current field selection.

Returns:

  • (Hash)

    The field selection.

Since:

  • 2.4.4



295
296
297
# File 'lib/mongoid/threaded.rb', line 295

def selection=(value)
  Thread.current["[mongoid]:selection"] = value
end

- (Hash) sessions

Get the database sessions from the current thread.

Examples:

Get the database sessions.

Threaded.sessions

Returns:

  • (Hash)

    The sessions.

Since:

  • 3.0.0



33
34
35
# File 'lib/mongoid/threaded.rb', line 33

def sessions
  Thread.current["[mongoid]:sessions"] ||= {}
end

- (Object) set_insert(name, consumer)

Set the insert consumer on the current thread.

Examples:

Set the insert consumer.

Threaded.insert = consumer

Parameters:

  • consumer (Object)

    The insert consumer.

Returns:

  • (Object)

    The insert consumer.

Since:

  • 2.1.0



240
241
242
# File 'lib/mongoid/threaded.rb', line 240

def set_insert(name, consumer)
  Thread.current["[mongoid][#{name}]:insert-consumer"] = consumer
end

- (Hash) set_persistence_options(klass, options)

Set the persistence options on the current thread.

Examples:

Set the persistence options.

Threaded.set_persistence_options(Band, { safe: { fsync: true }})

Parameters:

  • klass (Class)

    The model class.

  • options (Hash)

    The persistence options.

Returns:

  • (Hash)

    The persistence options.

Since:

  • 2.1.0



269
270
271
# File 'lib/mongoid/threaded.rb', line 269

def set_persistence_options(klass, options)
  Thread.current["[mongoid][#{klass}]:persistence-options"] = options
end

- (Array) stack(name)

Get the named stack.

Examples:

Get a stack by name

Threaded.stack(:create)

Parameters:

  • name (Symbol)

    The name of the stack

Returns:

  • (Array)

    The stack.

Since:

  • 2.4.0



75
76
77
# File 'lib/mongoid/threaded.rb', line 75

def stack(name)
  Thread.current["[mongoid]:#{name}-stack"] ||= []
end

- (true, false) timeless

Get the value of the one-off timeless call.

Examples:

Get the timeless value.

Threaded.timeless

Returns:

  • (true, false)

    The timeless setting.

Since:

  • 2.3.0



319
320
321
# File 'lib/mongoid/threaded.rb', line 319

def timeless
  !!Thread.current["[mongoid]:timeless"]
end

- (Object) timeless=(value)

Set the value of the one-off timeless call.

Examples:

Set the timeless value.

Threaded.timeless = true

Parameters:

  • value (true, false)

    The value.

Since:

  • 2.3.0



331
332
333
# File 'lib/mongoid/threaded.rb', line 331

def timeless=(value)
  Thread.current["[mongoid]:timeless"] = value
end

- (true, false) timestamping?

Is the current thread setting timestamps?

Examples:

Is the current thread timestamping?

Threaded.timestamping?

Returns:

  • (true, false)

    If timestamps can be applied.

Since:

  • 2.3.0



343
344
345
# File 'lib/mongoid/threaded.rb', line 343

def timestamping?
  !timeless
end

- (true, false) validated?(document)

Is the document validated on the current thread?

Examples:

Is the document validated?

Threaded.validated?(doc)

Parameters:

  • document (Document)

    The document to check.

Returns:

  • (true, false)

    If the document is validated.

Since:

  • 2.1.9



371
372
373
# File 'lib/mongoid/threaded.rb', line 371

def validated?(document)
  validations_for(document.class).include?(document.id)
end

- (Hash) validations

Get all validations on the current thread.

Examples:

Get all validations.

Threaded.validations

Returns:

  • (Hash)

    The current validations.

Since:

  • 2.1.9



395
396
397
# File 'lib/mongoid/threaded.rb', line 395

def validations
  Thread.current["[mongoid]:validations"] ||= {}
end

- (Array) validations_for(klass)

Get all validations on the current thread for the class.

Examples:

Get all validations.

Threaded.validations_for(Person)

Parameters:

  • The (Class)

    class to check.

Returns:

  • (Array)

    The current validations.

Since:

  • 2.1.9



422
423
424
# File 'lib/mongoid/threaded.rb', line 422

def validations_for(klass)
  validations[klass] ||= []
end