class Ballast::Configuration

A class which loads a list of YAML files in a folder and expose them in a dotted notation.

For each file, only the subsection for the current environment is loaded, so each YAML document should be an hash.

Public Class Methods

default_environment() click to toggle source

Returns the default environment. It will be the first non-nil of the following: Rails environment, the Rack environment or “production”.

@return [String] The default environment.

# File lib/ballast/configuration.rb, line 20
def self.default_environment
  defined?(Rails) ? Rails.env : ENV.fetch("RACK_ENV", "production")
end
default_root() click to toggle source

Returns the default root directory to lookup a configuration. It will be the Rails root if set or the current folder.

@return [String] The default root directory to lookup a configuration.

# File lib/ballast/configuration.rb, line 13
def self.default_root
  defined?(Rails) ? Rails.root.to_s : Dir.pwd
end
new(*sections, root: nil, environment: nil) click to toggle source

Creates a new configuration.

@param sections [Array] A list of sections to load. Each section name should be the basename (without extension) of a file in the root folder.

Subfolders are not supported.

@param root [String|NilClass] The root folder where look for file. @param environment [String|NilClass] The environment to load.

Calls superclass method
# File lib/ballast/configuration.rb, line 30
def initialize(*sections, root: nil, environment: nil)
  super()
  root ||= ::Ballast::Configuration.default_root
  environment ||= ::Ballast::Configuration.default_environment

  sections.each do |section|
    content = load_section(root, section)
    self[section.underscore] = content.fetch(environment, {})
  end

  enable_dotted_access
end