class Figaro::Application

Constants

FIGARO_ENV_PREFIX

Public Class Methods

new(options = {}) click to toggle source
# File lib/figaro/application.rb, line 10
def initialize(options = {})
  @options = options.inject({}) { |m, (k, v)| m[k.to_sym] = v; m }
end

Public Instance Methods

configuration() click to toggle source
# File lib/figaro/application.rb, line 31
def configuration
  global_configuration.merge(environment_configuration)
end
each(&block) click to toggle source
# File lib/figaro/application.rb, line 41
def each(&block)
  configuration.each(&block)
end
environment() click to toggle source
# File lib/figaro/application.rb, line 22
def environment
  environment = @options.fetch(:environment) { default_environment }
  environment.nil? ? nil : environment.to_s
end
environment=(environment) click to toggle source
# File lib/figaro/application.rb, line 27
def environment=(environment)
  @options[:environment] = environment
end
load() click to toggle source
# File lib/figaro/application.rb, line 35
def load
  each do |key, value|
    skip?(key) ? key_skipped!(key) : set(key, value)
  end
end
path() click to toggle source
# File lib/figaro/application.rb, line 14
def path
  @options.fetch(:path) { default_path }.to_s
end
path=(path) click to toggle source
# File lib/figaro/application.rb, line 18
def path=(path)
  @options[:path] = path
end

Private Instance Methods

default_environment() click to toggle source
# File lib/figaro/application.rb, line 51
def default_environment
  nil
end
default_path() click to toggle source
# File lib/figaro/application.rb, line 47
def default_path
  raise NotImplementedError
end
environment_configuration() click to toggle source
# File lib/figaro/application.rb, line 67
def environment_configuration
  raw_configuration[environment] || {}
end
global_configuration() click to toggle source
# File lib/figaro/application.rb, line 63
def global_configuration
  raw_configuration.reject { |_, value| value.is_a?(Hash) }
end
key_skipped!(key) click to toggle source
# File lib/figaro/application.rb, line 87
def key_skipped!(key)
  warn "WARNING: Skipping key #{key.inspect}. Already set in ENV."
end
non_string_configuration!(value) click to toggle source
# File lib/figaro/application.rb, line 83
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 59
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 55
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 71
def set(key, value)
  non_string_configuration!(key) unless key.is_a?(String)
  non_string_configuration!(value) unless value.is_a?(String) || value.nil?

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