module MicroConfig

MicroConfig - support for a basic yaml configuration

Constants

VERSION

Public Instance Methods

[](key) click to toggle source
# File lib/micro_config/micro_config.rb, line 28
def [](key)
  @config[key]
end
[]=(key, value) click to toggle source
# File lib/micro_config/micro_config.rb, line 32
def []=(key, value)
  @config[key.to_sym] = symbolize(value)
end
configure(source = nil, options = {}) { |self| ... } click to toggle source
# File lib/micro_config/micro_config.rb, line 40
def configure(source = nil, options = {}, &_block)
  if options[:environment]
    case source
    when /\.(yml|yaml)$/i
      file_config        = YAML.load_file(source)
      environment_config = file_config.fetch(options[:environment].to_s)

      @config.merge!(symbolize(environment_config))
    when Hash
      hash_config = source.fetch(options[:environment].to_s)

      @config.merge!(symbolize(hash_config))
    else
      yield self if block_given?
    end
  else
    case source
    when /\.(yml|yaml)$/i
      @config.merge!(symbolize(YAML.load_file(source)))
    when Hash
      @config.merge!(symbolize(source))
    else
      yield self if block_given?
    end
  end
rescue => ce
  raise("Problems loading config source: #{source}: (#{ce.message})")
end
fetch(key, default = nil) click to toggle source
# File lib/micro_config/micro_config.rb, line 36
def fetch(key, default = nil)
  @config.fetch(key, default)
end
method_missing(method, *arguments, &_block) click to toggle source
# File lib/micro_config/micro_config.rb, line 69
def method_missing(method, *arguments, &_block)
  clean_method = method.to_s

  case clean_method
  when /(.+)=$/
    key          = clean_method.delete('=').to_sym
    @config[key] = arguments.size == 1 ? arguments[0] : arguments
  when /(.+)\?$/
    key = clean_method.delete('?').to_sym

    @config.keys.include?(key)
  else
    key = clean_method.to_sym

    @config.fetch(key)
  end
end
symbolize(object) click to toggle source
# File lib/micro_config/micro_config.rb, line 11
def symbolize(object)
  case object
  when Hash
    object.inject({}) do |memo, (k, v)|
      memo.tap { |m| m[k.to_sym] = symbolize(v) }
    end
  when Array
    object.map { |v| symbolize(v) }
  else
    object
  end
end
to_h() click to toggle source
# File lib/micro_config/micro_config.rb, line 24
def to_h
  @config
end