class ConfLoader
Helps to load conf files in salemove ecosystem
Constants
- EnvironmentNotFoundError
- VERSION
- ValueNotDefinedError
Public Class Methods
load(path, env)
click to toggle source
Load given conf file
@path [String] path
full path to conf
@path [String] env
environment to load
@return [Hash]
hash with symbolized keys
@api public
# File lib/conf_loader.rb, line 22 def self.load(path, env) template = ERB.new File.new(path).read environments = YAML.load template.result(binding) if environments.has_key?(env) hash = environments[env] check_value_presence( guarantee_key_presence(Symbolizer.symbolize(hash)) ) else raise EnvironmentNotFoundError, "Configuration for `#{env}` not found at path #{path}" end end
Private Class Methods
check_value_presence(hash)
click to toggle source
# File lib/conf_loader.rb, line 48 def self.check_value_presence(hash) error_keys = check_values_not_empty(hash) if error_keys.empty? hash else raise ValueNotDefinedError, "Undefined keys: #{error_keys.join(', ')}" end end
check_values_not_empty(hash)
click to toggle source
# File lib/conf_loader.rb, line 57 def self.check_values_not_empty(hash) hash.inject([]) do |acc, (key, value)| errors = if value.is_a?(Hash) check_values_not_empty(value).map { |child_key| "#{key}.#{child_key}" } elsif value.to_s.empty? [key] else [] end acc + errors end end
guarantee_key_presence(hash)
click to toggle source
# File lib/conf_loader.rb, line 41 def self.guarantee_key_presence(hash) hash.default_proc = proc do |h, k| raise KeyError, "#{k} not defined" end hash end