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

Version Path
bookends-10.4.7.2 lib/bookends/config.rb
bookends-10.4.7.1 lib/bookends/config.rb
bookends-10.4.7 lib/bookends/config.rb
bookends-10.4.6 lib/bookends/config.rb
bookends-10.4.5 lib/bookends/config.rb
bookends-10.4.4 lib/bookends/config.rb
bookends-10.4.3 lib/bookends/config.rb
bookends-10.4.2 lib/bookends/config.rb
bookends-10.4.1 lib/bookends/config.rb
bookends-10.4.0 lib/bookends/config.rb