Class Config
has 42 methods (exceeds 20 allowed). Consider refactoring.
class Config
include Marshallers
DependencyLoadError = Class.new(StandardError)
File config.rb
has 345 lines of code (exceeds 250 allowed). Consider refactoring.
require "pathname"
require_relative "config/version"
require_relative "config/marshallers"
require_relative "config/marshallers/ini_marshaller"
Method fetch
has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring.
def fetch(*keys, default: nil, &block)
real_key = @aliases[flatten_keys(keys)]
keys = real_key.split(key_delim) if real_key
Method deep_set
has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
def deep_set(settings, *keys)
return settings if keys.empty?
key, *rest = *keys
value = settings[key]
Method load
has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
def load
return if dep_name.nil?
dep_name.empty? ? @block.() : dep_name.each { |dep| require(dep) }
rescue LoadError, NameError => err
Method deep_merge
has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
def deep_merge(this_hash, other_hash, &block)
this_hash.merge(other_hash) do |key, this_val, other_val|
if this_val.is_a?(::Hash) && other_val.is_a?(::Hash)
deep_merge(this_val, other_val, &block)
elsif block_given?