module Mongoid::Clients::Factory

Constants

MONGOID_WRAPPING_LIBRARY

Public Instance Methods

create(name = nil) click to toggle source

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(:analytics)

@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 24
def create(name = nil)
  return default unless name
  config = Mongoid.clients[name]
  raise Errors::NoClientConfig.new(name) unless config
  create_client(config)
end
default() click to toggle source

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 42
def default
  create_client(Mongoid.clients[:default])
end

Private Instance Methods

create_client(configuration) click to toggle source

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 60
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
driver_version() click to toggle source
# File lib/mongoid/clients/factory.rb, line 77
def driver_version
  Mongo::VERSION.split('.')[0...2].map(&:to_i)
end
options(configuration) click to toggle source
# File lib/mongoid/clients/factory.rb, line 81
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
  if (driver_version <=> [2, 13]) >= 0
    wrap_lib = if options[:wrapping_libraries]
      [MONGOID_WRAPPING_LIBRARY] + options[:wrapping_libraries]
    else
      [MONGOID_WRAPPING_LIBRARY]
    end
    options[:wrapping_libraries] = wrap_lib
  end
  options.reject{ |k, v| k == :hosts }.to_hash.symbolize_keys!
end