Sha256: 5683fa391e307a47c63b64987778b5d77da5769ef0c45263cfd74c4e63e452e4
Contents?: true
Size: 780 Bytes
Versions: 10
Compression:
Stored size: 780 Bytes
Contents
module Bookends module Config extend self @_config = {} attr_reader :_config def load!(filename, options = {}) configs = Psych.safe_load(File.read(filename), aliases: true).deep_symbolize_keys configs = configs[options[:env].to_sym] if options[:env] && configs[options[:env].to_sym] deep_merge!(@_config, configs) end # deep_merge by Stefan Rusterholz, see http://www.ruby-forum.com/topic/142809 def deep_merge!(target, data) merger = proc{ |key, v1, v2| Hash === v1 && Hash === v2 ? v1.merge(v2, &merger) : v2 } target.merge! data, &merger end def method_missing(name, *args, &block) @_config[name.to_sym] || fail(NoMethodError, "Calling undefined Bookends config: #{name}", caller) end end end
Version data entries
10 entries across 10 versions & 1 rubygems