class RailsBestPractices::Core::ChecksLoader

Public Class Methods

new(config) click to toggle source
# File lib/rails_best_practices/core/checks_loader.rb, line 6
def initialize(config)
  @config = config
end

Public Instance Methods

load_lexicals() click to toggle source

load all lexical checks.

# File lib/rails_best_practices/core/checks_loader.rb, line 11
def load_lexicals
  load_checks_from_config { |check_name| RailsBestPractices::Lexicals.const_get(check_name) }
end
load_reviews() click to toggle source

load all reviews according to configuration.

# File lib/rails_best_practices/core/checks_loader.rb, line 16
def load_reviews
  load_checks_from_config do |check_name|
    RailsBestPractices::Reviews.const_get(check_name.gsub(/Check$/, 'Review'))
  end
end

Private Instance Methods

checks_from_config() click to toggle source

read the checks from yaml config.

# File lib/rails_best_practices/core/checks_loader.rb, line 25
def checks_from_config
  @checks ||= YAML.load_file @config
end
instantiate_check(block, check_name, options) click to toggle source

instantiates a check

# File lib/rails_best_practices/core/checks_loader.rb, line 38
def instantiate_check(block, check_name, options)
  check_class = load_check_class(check_name, &block)
  check_class&.new(options || {})
end
load_check_class(check_name) { |check_name| ... } click to toggle source

loads the class for a check by calling the given block

# File lib/rails_best_practices/core/checks_loader.rb, line 44
def load_check_class(check_name)
  yield(check_name)
rescue NameError
  # nothing to do, the check does not exist
end
load_checks_from_config(&block) click to toggle source

load all checks from the configuration

# File lib/rails_best_practices/core/checks_loader.rb, line 30
def load_checks_from_config(&block)
  checks_from_config.each_with_object([]) do |check, active_checks|
    check_instance = instantiate_check(block, *check)
    active_checks << check_instance unless check_instance.nil?
  end
end