class RailsBestPractices::Core::Runner

RBP Runner

Public Class Methods

new(options={}) click to toggle source

initialize the runner.

@param [Hash] options pass the prepares and reviews.

# File lib/better_rails_best_practices.rb, line 12
def initialize(options={})
  gem_path = File.expand_path(File.dirname(__FILE__))
  default_config_path = File.join(gem_path, '../config/rails_best_practices.yml')

  custom_config = File.join(Runner.base_path, 'config/rails_best_practices.yml')
  @config = File.exists?(custom_config) ? custom_config : default_config_path

  lexicals = Array(options[:lexicals])
  prepares = Array(options[:prepares])
  reviews = Array(options[:reviews])

  checks_loader = ChecksLoader.new(@config)
  @lexicals = lexicals.empty? ? checks_loader.load_lexicals : lexicals
  @prepares = prepares.empty? ? load_prepares : prepares
  @reviews = reviews.empty? ? checks_loader.load_reviews : reviews
  load_plugin_reviews if reviews.empty?

  @lexical_checker ||= CodeAnalyzer::CheckingVisitor::Plain.new(checkers: @lexicals)
  @plain_prepare_checker ||= CodeAnalyzer::CheckingVisitor::Plain.new(checkers: @prepares.select { |checker| checker.is_a? Prepares::GemfilePrepare })
  @default_prepare_checker ||= CodeAnalyzer::CheckingVisitor::Default.new(checkers: @prepares.select { |checker| !checker.is_a? Prepares::GemfilePrepare })
  @review_checker ||= CodeAnalyzer::CheckingVisitor::Default.new(checkers: @reviews)
end