Module: Mongoid::Config::Environment

Extended by:
Environment
Included in:
Environment
Defined in:
lib/mongoid/config/environment.rb

Overview

Encapsulates logic for getting environment information.

Instance Method Summary collapse

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.



27
28
29
30
31
32
33
34
35
# 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 part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

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.



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# 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 = if RUBY_VERSION < '2.6'
    YAML.safe_load(result, permitted_classes, [], true)
  else
    YAML.safe_load(result, permitted_classes: permitted_classes, aliases: true)
  end

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

  data[env]
end