class Devkitkat::Processor
Attributes
command[R]
config[R]
services[R]
Public Class Methods
new(services, command, config)
click to toggle source
# File lib/devkitkat/processor.rb, line 7 def initialize(services, command, config) @services = services @command = command @config = config end
Public Instance Methods
execute()
click to toggle source
# File lib/devkitkat/processor.rb, line 13 def execute results = [] print_log_paths if services.count == 1 # If the target is only one, it could be console access (TTY) # so we can't run in parallel. results << services.first.execute else results = Parallel.map(services, progress: 'Executing', in_processes: 8) do |service| service.execute.tap do |success| raise Parallel::Kill unless success end end end results&.all? { |result| result == true } || terminate_process_group! end
Private Instance Methods
print_log_paths()
click to toggle source
# File lib/devkitkat/processor.rb, line 41 def print_log_paths return if command.interactive? || command.quiet? log_paths = services.map(&:log_path) puts %Q{See the log at \n#{log_paths.join("\n")}} end
terminate_process_group!()
click to toggle source
# File lib/devkitkat/processor.rb, line 35 def terminate_process_group! pgid = Process.getpgid(Process.pid) Process.kill('TERM', -pgid) end