lib/rake_script/shell.rb in rake_script-0.4.0 vs lib/rake_script/shell.rb in rake_script-0.4.1

- old
+ new

@@ -66,16 +66,25 @@ # @param stderr [Proc] each command error output line will be passed to this proc. # @return [Process::Status] status object for command. def raw_execute(command_line, stdout:, stderr:) Open3.popen3(command_line) do |_stdin_io, stdout_io, stderr_io, wait_thread| Thread.new do - until (raw_line = stdout_io.gets).nil? do - stdout.call(raw_line) + begin + until (raw_line = stdout_io.gets).nil? do + stdout.call(raw_line) + end + rescue IOError => _ + # command process was closed and it's ok end + end Thread.new do - until (raw_line = stderr_io.gets).nil? do - stderr.call(raw_line) + begin + until (raw_line = stderr_io.gets).nil? do + stderr.call(raw_line) + end + rescue IOError => _ + # command process was closed and it's ok end end wait_thread.value end end