Class: Mongoid::PersistenceContext
- Inherits:
-
Object
- Object
- Mongoid::PersistenceContext
- Extended by:
- Forwardable
- Defined in:
- lib/mongoid/persistence_context.rb
Overview
Object encapsulating logic for setting/getting a collection and database name and a client with particular options to use when persisting models.
Constant Summary collapse
- EXTRA_OPTIONS =
Extra options in addition to driver client options that determine the persistence context.
[ :client, :collection ].freeze
- VALID_OPTIONS =
The full list of valid persistence context options.
( Mongo::Client::VALID_OPTIONS + EXTRA_OPTIONS ).freeze
Instance Attribute Summary collapse
-
#options ⇒ Hash
readonly
The options defining this persistence context.
Class Method Summary collapse
-
.clear(object, cluster = nil, original_context = nil) ⇒ Object
Clear the persistence context for a particular class or model instance.
-
.get(object) ⇒ Mongoid::PersistenceContext
Get the persistence context for a particular class or model instance.
-
.set(object, options_or_context) ⇒ Mongoid::PersistenceContext
Set the persistence context for a particular class or model instance.
Instance Method Summary collapse
-
#==(other) ⇒ true, false
Determine if this persistence context is equal to another.
-
#client ⇒ Mongo::Client
Get the client for this persistence context.
- #client_name ⇒ Object
-
#collection(parent = nil) ⇒ Mongo::Collection
Get the collection for this persistence context.
-
#collection_name ⇒ String
Get the collection name for this persistence context.
-
#database_name ⇒ String
Get the database name for this persistence context.
-
#initialize(object, opts = {}) ⇒ PersistenceContext
constructor
Initialize the persistence context object.
Constructor Details
#initialize(object, opts = {}) ⇒ PersistenceContext
Initialize the persistence context object.
44 45 46 47 |
# File 'lib/mongoid/persistence_context.rb', line 44 def initialize(object, opts = {}) @object = object (opts) end |
Instance Attribute Details
#options ⇒ Hash (readonly)
The options defining this persistence context.
19 20 21 |
# File 'lib/mongoid/persistence_context.rb', line 19 def @options end |
Class Method Details
.clear(object, cluster = nil, original_context = nil) ⇒ Object
Clear the persistence context for a particular class or model instance.
211 212 213 214 215 216 217 218 219 |
# File 'lib/mongoid/persistence_context.rb', line 211 def clear(object, cluster = nil, original_context = nil) if context = get(object) unless cluster.nil? || context.cluster.equal?(cluster) context.client.close end end ensure Thread.current["[mongoid][#{object.object_id}]:context"] = original_context end |
.get(object) ⇒ Mongoid::PersistenceContext
Get the persistence context for a particular class or model instance.
198 199 200 |
# File 'lib/mongoid/persistence_context.rb', line 198 def get(object) Thread.current["[mongoid][#{object.object_id}]:context"] end |
.set(object, options_or_context) ⇒ Mongoid::PersistenceContext
Set the persistence context for a particular class or model instance.
If there already is a persistence context set, options in the existing context are combined with options given to the set call.
174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 |
# File 'lib/mongoid/persistence_context.rb', line 174 def set(object, ) key = "[mongoid][#{object.object_id}]:context" existing_context = Thread.current[key] = if existing_context existing_context. else {} end if .is_a?(PersistenceContext) = . end = .merge() context = PersistenceContext.new(object, ) Thread.current[key] = context end |
Instance Method Details
#==(other) ⇒ true, false
Determine if this persistence context is equal to another.
120 121 122 123 |
# File 'lib/mongoid/persistence_context.rb', line 120 def ==(other) return false unless other.is_a?(PersistenceContext) == other. end |
#client ⇒ Mongo::Client
Get the client for this persistence context.
93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/mongoid/persistence_context.rb', line 93 def client @client ||= begin client = Clients.with_name(client_name) if database_name_option client = client.use(database_name) end unless .empty? client = client.with() end client end end |
#client_name ⇒ Object
106 107 108 109 110 |
# File 'lib/mongoid/persistence_context.rb', line 106 def client_name @client_name ||= [:client] || Threaded.client_override || && __evaluate__([:client]) end |
#collection(parent = nil) ⇒ Mongo::Collection
Get the collection for this persistence context.
59 60 61 |
# File 'lib/mongoid/persistence_context.rb', line 59 def collection(parent = nil) parent ? parent.collection.with() : client[collection_name.to_sym] end |
#collection_name ⇒ String
Get the collection name for this persistence context.
70 71 72 73 |
# File 'lib/mongoid/persistence_context.rb', line 70 def collection_name @collection_name ||= (__evaluate__([:collection] || [:collection])) end |
#database_name ⇒ String
Get the database name for this persistence context.
82 83 84 |
# File 'lib/mongoid/persistence_context.rb', line 82 def database_name __evaluate__(database_name_option) || client.database.name end |