class LucidUtils::ConfigFromFile

Public Instance Methods

call(path, env_prefix: nil) click to toggle source

@param path [String] @param env_prefix [String, nil] environment variables override values in the file

@return [Hash]

# File lib/lucid_utils/config_from_file.rb, line 11
def call(path, env_prefix: nil)
  instance_eval(File.read(path)).tap do |result|
    raise TypeError, 'not and instance of Hash' unless result.is_a?(Hash)
  end.then do |config|
    env_prefix ? env_overrides(config, env_prefix) : config
  end
end

Private Instance Methods

env_overrides(config, env_prefix) click to toggle source

@param config [Hash] @param env_prefix [String]

@return [Hash]

# File lib/lucid_utils/config_from_file.rb, line 26
        def env_overrides(config, env_prefix)
  config.each_with_object({}) do |(k, v), config|
    env_key = [env_prefix, k].join('_').upcase

    if v.is_a?(Hash)
      config[k] = env_overrides(v, env_key)
    else
      config[k] = ENV.fetch(env_key, v)
    end
  end
end