class Config::Sources::YAMLSource

Attributes

evaluate_erb[R]
path[RW]

Public Class Methods

new(path, evaluate_erb: Config.evaluate_erb_in_yaml) click to toggle source
# File lib/config/sources/yaml_source.rb, line 10
def initialize(path, evaluate_erb: Config.evaluate_erb_in_yaml)
  @path = path.to_s
  @evaluate_erb = !!evaluate_erb
end

Public Instance Methods

load() click to toggle source

returns a config hash from the YML file

# File lib/config/sources/yaml_source.rb, line 16
def load
  if @path and File.exist?(@path)
    file_contents = IO.read(@path)
    file_contents = ERB.new(file_contents).result if evaluate_erb
    result = YAML.respond_to?(:unsafe_load) ? YAML.unsafe_load(file_contents) : YAML.load(file_contents)
  end

  result || {}

rescue Psych::SyntaxError => e
  raise "YAML syntax error occurred while parsing #{@path}. " \
        "Please note that YAML must be consistently indented using spaces. Tabs are not allowed. " \
        "Error: #{e.message}"
end