class RailsAudit::Runner

Public Class Methods

new() click to toggle source
# File lib/rails-audit/runner.rb, line 5
def initialize
  @config = { 'Concurrency' => true, 'Rails' => true }
  return unless File.exist? 'config/audit.yml'

  @config = @config.merge YAML.load_file('config/audit.yml')
end

Public Instance Methods

get_config(name) click to toggle source
# File lib/rails-audit/runner.rb, line 12
def get_config(name)
  defaults = { 'Parameters' => '', 'Enabled' => true }
  config = defaults.merge(@config[name] || {})
  {
    rails: @config['Rails'],
    params: config['Parameters'],
    enabled: config['Enabled']
  }
end
run() click to toggle source
# File lib/rails-audit/runner.rb, line 22
def run
  concurrency = @config['Concurrency']

  failures = concurrency && run_threads || run_sequence

  if failures.any?
    puts 'Failed tests:'
    failures.each { |f| puts f }
  end

  failures.none?
end
run_sequence() click to toggle source
# File lib/rails-audit/runner.rb, line 35
def run_sequence
  failures = []

  Audits::ALL.each do |audit|
    success = audit.run get_config(audit.name)
    failures << audit.name unless success
  end

  failures
end
run_threads() click to toggle source
# File lib/rails-audit/runner.rb, line 46
def run_threads
  failures = []
  mutex = Mutex.new

  threads = Audits::ALL.map do |audit|
    Thread.new do
      success = audit.run get_config(audit.name)
      mutex.synchronize { failures << audit.name unless success }
    end
  end

  threads.each(&:join)

  failures
end