Id — Documentation by YARD 0.9.37 (original) (raw)

Module: Mongo::IdPrivate

Overview

This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.

This module abstracts the functionality for generating sequential unique integer IDs for instances of the class. It defines the method #next_id on the class that includes it. The implementation ensures that the IDs will be unique even when called from multiple threads.

Classes which include Id should not access ‘@@id` or `@@id_lock` directly; instead, they should call `#next_id` in `#initialize` and save the result in the instance being created.

Class Method Summarycollapse

Class Method Details

.included(klass) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

56 57 58 59 60 61 62 63 64 65 66 67 # File 'lib/mongo/id.rb', line 56 def self.included(klass) klass.class_variable_set(:@@id, 0) klass.class_variable_set(:@@id_lock, Mutex.new) klass.define_singleton_method(:next_id) do klass.class_variable_get(:@@id_lock).synchronize do id = class_variable_get(:@@id) klass.class_variable_set(:@@id, id + 1) klass.class_variable_get(:@@id) end end end