class FlexibleConfig::Builder

Attributes

base_key[R]

Public Class Methods

new(base_key = '') click to toggle source
# File lib/flexible_config/builder.rb, line 5
def initialize(base_key = '')
  @base_key = base_key
end

Public Instance Methods

[](additional_key, default = nil)
Alias for: fetch
fetch(additional_key, default = nil) { || ... } click to toggle source
# File lib/flexible_config/builder.rb, line 9
def fetch(additional_key, default = nil)
  key  = "#{base_key}.#{additional_key}"
  item = [WrappedEnv[key], WrappedYaml[key], default].detect { |i| !i.nil? }

  return item unless item.nil?
  return yield if block_given?

  raise NotFound.new key
end
Also aliased as: []
method_missing(method, *args, &block) click to toggle source
Calls superclass method
# File lib/flexible_config/builder.rb, line 20
def method_missing(method, *args, &block)
  value = fetch(*args, &block)
  return super unless value.respond_to? method

  result = value.send method

  raise UnsafeConversion.new(
    "Tried to convert #{value} to int #{result} but was deemed unsafe."
  ) unless result.to_s == value.to_s

  result
end