class ConfigModule::ConfigHelper

Attributes

config_file[RW]
namespaces[W]
raw_config[R]

Public Instance Methods

config() click to toggle source
# File lib/config_module/config_helper.rb, line 9
def config
  @config ||= ConfigOption.wrap load_config
end
field_lookup_handler(name, _source, *_args, &_block) click to toggle source
# File lib/config_module/config_helper.rb, line 28
def field_lookup_handler name, _source, *_args, &_block
  config[name]
end
load_config() click to toggle source
# File lib/config_module/config_helper.rb, line 32
def load_config
  raise ConfigModule::ConfigFileNotSpecified, config_file unless config_file
  raise ConfigModule::ConfigFileNotFound, config_file unless File.exist? config_file

  yaml_load
  load_namespaces_from raw_config
end
load_namespaces_from(tree) click to toggle source
# File lib/config_module/config_helper.rb, line 40
def load_namespaces_from tree
  namespaces.inject(ConfigOption.wrap(tree)) do |subtree, ns|
    if ConfigOption === subtree && ns.respond_to?(:to_sym) && subtree.has_key?(ns)
      ConfigOption.wrap subtree[ns]
    else
      raise(
        InvalidNamespaceError.new(ns, subtree, caller),
        "No subkey with name: #{ns.inspect}", caller(6)
      )
    end
  end
rescue TypeError
  raise(
    InvalidNamespaceError.new(namespaces.first, self, caller),
    "Namespace must be a string or symbol, instead it was: #{namespaces.first.class}", caller(6)
  )
end
method_missing_handler(name, source, *args, &block) click to toggle source
# File lib/config_module/config_helper.rb, line 13
def method_missing_handler name, source, *args, &block
  ConfigOption.wrap config.send(name, *args, &block)
rescue NoMethodError => error
  raise unless error.name == name

  raise(
    ConfigOption::NotFoundError.new(name, self, error),
    error.message, source
  )
end
namespaces() click to toggle source
# File lib/config_module/config_helper.rb, line 58
def namespaces
  @namespaces ||= []
end
respond_to_missing_handler(name, include_all) click to toggle source
# File lib/config_module/config_helper.rb, line 24
def respond_to_missing_handler name, include_all
  config.send(:respond_to_missing?, name, include_all)
end

Private Instance Methods

yaml_load() click to toggle source
# File lib/config_module/config_helper.rb, line 64
def yaml_load
  @raw_config =
    if YAML::VERSION >= "3.0.2"
      YAML.load_file config_file, fallback: {}
    elsif YAML::VERSION >= "2.1.0"
      YAML.load_file config_file, {}
    else
      YAML.load_file(config_file) || {} # ambiguous with false or nil value
    end
end