Class: Ductwork::Processes::ThreadSupervisorRunner

Inherits:
Object
  • Object
show all
Defined in:
lib/ductwork/processes/thread_supervisor_runner.rb

Instance Method Summary collapse

Constructor Details

#initialize(*pipelines) ⇒ ThreadSupervisorRunner

Returns a new instance of ThreadSupervisorRunner.



6
7
8
9
# File 'lib/ductwork/processes/thread_supervisor_runner.rb', line 6

def initialize(*pipelines)
  @pipelines = pipelines
  @supervisor = Ductwork::Processes::ThreadSupervisor.new
end

Instance Method Details

#runObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/ductwork/processes/thread_supervisor_runner.rb', line 11

def run
  if Ductwork.configuration.role.in?(%w[all advancer])
    pipelines.each do |pipeline|
      Ductwork.configuration.pipeline_advancer_count(pipeline).times do |index|
        log_created_pipeline_advancer(pipeline, index)
        supervisor.add_worker(metadata: { pipeline: }) do
          pipeline_advancer.new(pipeline, index)
        end
      end
    end
  end

  if Ductwork.configuration.role.in?(%w[all worker])
    pipelines.each do |pipeline|
      Ductwork.configuration.job_worker_count(pipeline).times do |index|
        log_created_job_worker(pipeline, index)
        supervisor.add_worker(metadata: { pipeline: }) do
          job_worker.new(pipeline, index)
        end
      end
    end
  end

  supervisor.run
end