class Moltrio::Config::Adapter

Public Instance Methods

[](key) click to toggle source
# File lib/moltrio/config/adapters/adapter.rb, line 15
def [](key)
  raise NotImplementedError
end
[]=(key, value) click to toggle source
# File lib/moltrio/config/adapters/adapter.rb, line 19
def []=(key, value)
  raise NotImplementedError
end
available_namespaces() click to toggle source
# File lib/moltrio/config/adapters/adapter.rb, line 66
def available_namespaces
  []
end
fetch(key, default = Undefined) { || ... } click to toggle source
# File lib/moltrio/config/adapters/adapter.rb, line 27
def fetch(key, default = Undefined)
  if has_key?(key)
    self[key]
  elsif default != Undefined
    default
  elsif block_given?
    yield
  else
    raise KeyError, key
  end
end
fetch_all(*keys) { |key, hash| ... } click to toggle source
# File lib/moltrio/config/adapters/adapter.rb, line 46
def fetch_all(*keys)
  hash = slice(*keys)
  missing_keys = keys - hash.keys

  if missing_keys.none?
    hash
  elsif block_given?
    missing_keys.each do |key|
      hash[key] = yield(key, hash)
    end
  else
    raise KeyError, missing_keys
  end
end
has_key?(key) click to toggle source
# File lib/moltrio/config/adapters/adapter.rb, line 23
def has_key?(key)
  raise NotImplementedError
end
missing_namespace?() click to toggle source
# File lib/moltrio/config/adapters/adapter.rb, line 61
def missing_namespace?
  raise NotImplementedError,
    "Please define whether #{self.class} requires a namespace"
end
on_namespace(_) click to toggle source
# File lib/moltrio/config/adapters/adapter.rb, line 7
def on_namespace(_)
  if missing_namespace?
    raise NotImplementedError, "Please override on_namespace for #{self.class}!"
  else
    self
  end
end
slice(*keys) click to toggle source
# File lib/moltrio/config/adapters/adapter.rb, line 39
def slice(*keys)
  keys
    .select { |key| has_key?(key)    }
    .map    { |key| [key, self[key]] }
    .to_h
end