123456789_123456789_123456789_123456789_123456789_

Module: Mongoid::Config::Environment

Relationships & Source Files
Defined in: lib/mongoid/config/environment.rb

Overview

Encapsulates logic for getting environment information.

Instance Method Summary

Instance Method Details

#env_nameString

Get the name of the environment that ::Mongoid is running under.

Uses the following sources in order:

  • If ::Rails is defined, Rails.env.

  • If ::Sinatra is defined, Sinatra::Base.environment.

  • RACK_ENV

  • +MONGOID_ENV*

Examples:

Get the env name.

Environment.env_name

Returns:

  • (String)

    The name of the current environment.

Raises:

  • (Errors::NoEnvironment)

    If environment name cannot be determined because none of the sources was set.

[ GitHub ]

  
# File 'lib/mongoid/config/environment.rb', line 27

def env_name
  if defined?(::Rails)
    return ::Rails.env
  end
  if defined?(::Sinatra)
    return ::Sinatra::Base.environment.to_s
  end
  ENV["RACK_ENV"] || ENV["MONGOID_ENV"] or raise Errors::NoEnvironment
end

#load_yaml(path, environment = nil) ⇒ Hash

This method is for internal use only.

Load the yaml from the provided path and return the settings for the specified environment, or for the current ::Mongoid environment.

Examples:

Load the yaml.

Environment.load_yaml("/work/mongoid.yml")

Parameters:

  • path (String)

    The location of the file.

  • environment (String | Symbol) (defaults to: nil)

    Optional environment name to override the current ::Mongoid environment.

Returns:

  • (Hash)

    The settings.

[ GitHub ]

  
# File 'lib/mongoid/config/environment.rb', line 50

def load_yaml(path, environment = nil)
  env = environment ? environment.to_s : env_name

  contents = File.read(path)
  if contents.empty?
    raise Mongoid::Errors::EmptyConfigFile.new(path)
  end

  # These are the classes that can be used in a Mongoid
  # configuration file in addition to standard YAML types.
  permitted_classes = [
    # Symbols occur as values for read preference, for example.
    Symbol,
    # BSON::Binary occur as keyId values for FLE (more precisely,
    # the keyIds are UUIDs).
    BSON::Binary,
  ]

  result = ERB.new(contents).result
  data = YAML.safe_load(result, permitted_classes: permitted_classes, aliases: true)

  unless data.is_a?(Hash)
    raise Mongoid::Errors::InvalidConfigFile.new(path)
  end

  data[env]
end