class Rake::Multilogs::Fork
@private
Public Class Methods
new(task:, args:, invocation_chain:)
click to toggle source
# File lib/rake/multilogs/fork.rb, line 7 def initialize(task:, args:, invocation_chain:) @task = task @args = args @invocation_chain = invocation_chain end
Public Instance Methods
failed?()
click to toggle source
# File lib/rake/multilogs/fork.rb, line 27 def failed? !@status.success? end
invoke()
click to toggle source
# File lib/rake/multilogs/fork.rb, line 13 def invoke @reader, @writer = IO.pipe @pid = fork { invoke_in_child_process } @writer.close end
report()
click to toggle source
# File lib/rake/multilogs/fork.rb, line 23 def report puts @reader.read end
to_s()
click to toggle source
# File lib/rake/multilogs/fork.rb, line 31 def to_s @task.to_s end
wait()
click to toggle source
# File lib/rake/multilogs/fork.rb, line 19 def wait _, @status = Process.wait2(@pid) end
Private Instance Methods
invoke_in_child_process()
click to toggle source
# File lib/rake/multilogs/fork.rb, line 37 def invoke_in_child_process @reader.close [STDOUT, STDERR].each do |stream| stream.reopen @writer end @task.application.standard_exception_handling do Multilogs.call_after_fork @task @task.send :invoke_with_call_chain, @args, @invocation_chain end end