Class: BrokenRecord::Scanner

Inherits:
Object
  • Object
show all
Defined in:
lib/broken_record/scanner.rb

Instance Method Summary collapse

Instance Method Details

#run(class_names) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/broken_record/scanner.rb', line 7

def run(class_names)
  ResultAggregator.new.tap do |aggregator|
    classes = classes_to_validate(class_names)

    BrokenRecord::Config.before_scan_callbacks.each { |callback| callback.call }

    jobs = BrokenRecord::Job.build_jobs(classes)

    callback = proc do |_, _, result|
      aggregator.add_result result if result.is_a? BrokenRecord::JobResult
    end

    Parallel.each(jobs, :finish => callback) do |job|
      ActiveRecord::Base.connection.reconnect!
      BrokenRecord::Config.after_fork_callbacks.each { |callback| callback.call }
      job.perform
    end
  end
end