module Mongoid::Config
This module defines all the configuration options for Mongoid
, including the database connections.
Constants
- LOCK
Public Instance Methods
Get the client configuration or an empty hash.
@example Get the clients configuration.
config.clients
@return [ Hash ] The clients configuration.
@since 3.0.0
# File lib/mongoid/config.rb, line 267 def clients @clients ||= {} end
Connect to the provided database name on the default client.
@note Use only in development or test environments for convenience.
@example Set the database to connect to.
config.connect_to("mongoid_test")
@param [ String ] name The database name.
@since 3.0.0
# File lib/mongoid/config.rb, line 101 def connect_to(name, options = { read: { mode: :primary }}) self.clients = { default: { database: name, hosts: [ "localhost:27017" ], options: options } } end
Return field names that could cause destructive things to happen if defined in a Mongoid::Document
.
@example Get the destructive fields.
config.destructive_fields
@return [ Array<String> ] An array of bad field names.
# File lib/mongoid/config.rb, line 118 def destructive_fields Composable.prohibited_methods end
Load the settings from a compliant mongoid.yml file. This can be used for easy setup with frameworks other than Rails
.
@example Configure Mongoid
.
Mongoid.load!("/path/to/mongoid.yml")
@param [ String ] path The path to the file. @param [ String, Symbol ] environment The environment to load.
@since 2.0.1
# File lib/mongoid/config.rb, line 132 def load!(path, environment = nil) settings = Environment.load_yaml(path, environment) if settings.present? Clients.disconnect Clients.clear load_configuration(settings) end settings end
From a hash of settings, load all the configuration.
@example Load the configuration.
config.load_configuration(settings)
@param [ Hash ] settings The configuration settings.
@since 3.1.0
# File lib/mongoid/config.rb, line 177 def load_configuration(settings) configuration = settings.with_indifferent_access self.options = configuration[:options] self.clients = configuration[:clients] set_log_levels end
Get all the models in the application - this is everything that includes Mongoid::Document
.
@example Get all the models.
config.models
@return [ Array<Class> ] All the models in the application.
@since 3.1.0
# File lib/mongoid/config.rb, line 151 def models @models ||= [] end
Set the configuration options. Will validate each one individually.
@example Set the options.
config.options = { raise_not_found_error: true }
@param [ Hash ] options The configuration options.
@since 3.0.0
# File lib/mongoid/config.rb, line 250 def options=(options) if options options.each_pair do |option, value| Validators::Option.validate(option) send("#{option}=", value) end end end
Override the client to use globally.
@example Override the client globally.
config.override_client(:optional)
@param [ String, Symbol ] name The name of the client.
@return [ String, Symbol ] The global override.
@since 3.0.0
# File lib/mongoid/config.rb, line 208 def override_client(name) Threaded.client_override = name ? name.to_s : nil end
Override the database to use globally.
@example Override the database globally.
config.override_database(:optional)
@param [ String, Symbol ] name The name of the database.
@return [ String, Symbol ] The global override.
@since 3.0.0
# File lib/mongoid/config.rb, line 194 def override_database(name) Threaded.database_override = name end
Purge all data in all collections, including indexes.
@example Purge all data.
Mongoid::Config.purge!
@note This is the fastest way to drop all data.
@return [ true ] true.
@since 2.0.2
# File lib/mongoid/config.rb, line 222 def purge! global_client.database.collections.each(&:drop) and true end
Register a model in the application with Mongoid
.
@example Register a model.
config.register_model(Band)
@param [ Class ] klass The model to register.
@since 3.1.0
# File lib/mongoid/config.rb, line 163 def register_model(klass) LOCK.synchronize do models.push(klass) unless models.include?(klass) end end
Is the application running under passenger?
@example Is the application using passenger?
config.running_with_passenger?
@return [ true, false ] If the app is deployed on Passenger.
@since 3.0.11
# File lib/mongoid/config.rb, line 291 def running_with_passenger? @running_with_passenger ||= defined?(PhusionPassenger) end
Get the time zone to use.
@example Get the time zone.
Config.time_zone
@return [ String ] The time zone.
@since 3.0.0
# File lib/mongoid/config.rb, line 279 def time_zone use_utc? ? "UTC" : ::Time.zone end
Truncate all data in all collections, but not the indexes.
@example Truncate all collection data.
Mongoid::Config.truncate!
@note This will be slower than purge!
@return [ true ] true.
@since 2.0.2
# File lib/mongoid/config.rb, line 236 def truncate! global_client.database.collections.each do |collection| collection.find.delete_many end and true end
Private Instance Methods
# File lib/mongoid/config.rb, line 302 def clients=(clients) raise Errors::NoClientsConfig.new unless clients c = clients.with_indifferent_access Validators::Client.validate(c) @clients = c end
Get database client that respects global overrides Config.override_database
and Config.override_client
.
@return [Mongo::Client] Client according to global overrides.
# File lib/mongoid/config.rb, line 313 def global_client client = if Threaded.client_override Clients.with_name(Threaded.client_override) else Clients.default end if Threaded.database_override client.use(Threaded.database_override) else client end end
# File lib/mongoid/config.rb, line 297 def set_log_levels Mongoid.logger.level = Mongoid::Config.log_level unless defined?(::Rails) Mongo::Logger.logger.level = Mongoid.logger.level end