class Figaro::Application

Constants

FIGARO_ENV_PREFIX

Attributes

environment[W]
path[W]

Public Class Methods

new(options = {}) click to toggle source
# File lib/figaro/application.rb, line 12
def initialize(options = {})
  @path = options[:path]
  @environment = options[:environment]
end

Public Instance Methods

configuration() click to toggle source
# File lib/figaro/application.rb, line 25
def configuration
  global_configuration.merge(environment_configuration)
end
environment() click to toggle source
# File lib/figaro/application.rb, line 21
def environment
  (@environment || default_environment).to_s
end
load() click to toggle source
# File lib/figaro/application.rb, line 29
def load
  configuration.each do |key, value|
    set(key, value) unless skip?(key)
  end
end
path() click to toggle source
# File lib/figaro/application.rb, line 17
def path
  (@path || default_path).to_s
end

Private Instance Methods

default_environment() click to toggle source
# File lib/figaro/application.rb, line 41
def default_environment
  raise NotImplementedError
end
default_path() click to toggle source
# File lib/figaro/application.rb, line 37
def default_path
  raise NotImplementedError
end
environment_configuration() click to toggle source
# File lib/figaro/application.rb, line 57
def environment_configuration
  raw_configuration.fetch(environment) { {} }
end
global_configuration() click to toggle source
# File lib/figaro/application.rb, line 53
def global_configuration
  raw_configuration.reject { |_, value| value.is_a?(Hash) }
end
non_string_configuration!(value) click to toggle source
# File lib/figaro/application.rb, line 73
def non_string_configuration!(value)
  warn "WARNING: Use strings for Figaro configuration. #{value.inspect} was converted to #{value.to_s.inspect}."
end
parse(path) click to toggle source
# File lib/figaro/application.rb, line 49
def parse(path)
  File.exist?(path) && YAML.load(ERB.new(File.read(path)).result) || {}
end
raw_configuration() click to toggle source
# File lib/figaro/application.rb, line 45
def raw_configuration
  (@parsed ||= Hash.new { |hash, path| hash[path] = parse(path) })[path]
end
set(key, value) click to toggle source
# File lib/figaro/application.rb, line 61
def set(key, value)
  non_string_configuration!(key) unless key.is_a?(String)
  non_string_configuration!(value) unless value.is_a?(String)

  ::ENV[key.to_s] = value.to_s
  ::ENV[FIGARO_ENV_PREFIX + key.to_s] = value.to_s
end
skip?(key) click to toggle source
# File lib/figaro/application.rb, line 69
def skip?(key)
  ::ENV.key?(key.to_s) && !::ENV.key?(FIGARO_ENV_PREFIX + key.to_s)
end