module Mongoid::Clients::Factory
Public Instance Methods
Create a new client given the named configuration. If no name is provided, return a new client with the default configuration. If a name is provided for which no configuration exists, an error will be raised.
@example Create the client.
Factory.create(:secondary)
@param [ String, Symbol
] name The named client configuration.
@raise [ Errors::NoClientConfig
] If no config could be found.
@return [ Mongo::Client ] The new client.
@since 3.0.0
# File lib/mongoid/clients/factory.rb, line 23 def create(name = nil) return default unless name config = Mongoid.clients[name] raise Errors::NoClientConfig.new(name) unless config create_client(config) end
Get the default client.
@example Get the default client.
Factory.default
@raise [ Errors::NoClientConfig
] If no default configuration is
found.
@return [ Mongo::Client ] The default client.
@since 3.0.0
# File lib/mongoid/clients/factory.rb, line 41 def default create_client(Mongoid.clients[:default]) end
Private Instance Methods
Create the client for the provided config.
@api private
@example Create the client.
Factory.create_client(config)
@param [ Hash ] configuration The client config.
@return [ Mongo::Client ] The client.
@since 3.0.0
# File lib/mongoid/clients/factory.rb, line 59 def create_client(configuration) raise Errors::NoClientsConfig.new unless configuration if configuration[:uri] Mongo::Client.new(configuration[:uri], options(configuration)) else Mongo::Client.new( configuration[:hosts], options(configuration).merge(database: configuration[:database]) ) end end
# File lib/mongoid/clients/factory.rb, line 71 def options(configuration) config = configuration.dup options = config.delete(:options) || {} options[:platform] = PLATFORM_DETAILS options[:app_name] = Mongoid::Config.app_name if Mongoid::Config.app_name options.reject{ |k, v| k == :hosts }.to_hash.symbolize_keys! end