class Supercop::Configuration

Attributes

cops_settings[RW]
file_path[RW]
verbose[RW]

Public Class Methods

new() click to toggle source
# File lib/supercop/configuration.rb, line 5
def initialize
  @cops_settings = config_file.fetch(:config)
  @verbose = config_file.fetch(:verbose)
  @file_path = config_path
end

Public Instance Methods

path(file_path) click to toggle source
# File lib/supercop/configuration.rb, line 11
def path(file_path)
  defined?(Rails) ? Rails.root.join(file_path) : File.join(Dir.pwd, file_path)
end

Private Instance Methods

config_file() click to toggle source
# File lib/supercop/configuration.rb, line 17
def config_file
  @_config_file ||= YAML.load_file(config_path).with_indifferent_access
rescue => e
  puts "Can't find or read config file, did you run initialize command? #{e.message}"
end
config_path() click to toggle source
# File lib/supercop/configuration.rb, line 23
def config_path
  @_config_path ||= defined?(Rails) ? rails_path : other_path
end
define_dig() click to toggle source

FYI: dirty hack for ruby < 2.3

# File lib/supercop/configuration.rb, line 42
    def define_dig
      new_method = <<-NEW
        class ::Hash
          def dig(*path)
            path.inject(self) do |location, key|
              location.is_a?(Hash) ? location[key] : nil
            end
          end
        end
      NEW

      eval(new_method)
    end
method_missing(m, *args, &block) click to toggle source
Calls superclass method
# File lib/supercop/configuration.rb, line 35
def method_missing(m, *args, &block)
  define_dig unless cops_settings.methods.include?(:dig)

  cops_settings.dig(m) || super
end
other_path() click to toggle source
# File lib/supercop/configuration.rb, line 31
def other_path
  File.join(Dir.pwd, 'supercop.yml')
end
rails_path() click to toggle source
# File lib/supercop/configuration.rb, line 27
def rails_path
  Rails.root.join('config', 'supercop.yml')
end
respond_to_missing?(method_name, include_private = false) click to toggle source

robots.thoughtbot.com/always-define-respond-to-missing-when-overriding

Calls superclass method
# File lib/supercop/configuration.rb, line 57
def respond_to_missing?(method_name, include_private = false)
  cops_settings.keys.include?(method_name) || super
end