lib/frontkick/command.rb in frontkick-0.4.4 vs lib/frontkick/command.rb in frontkick-0.4.5
- old
+ new
@@ -20,13 +20,15 @@
lock_fd = file_lock(opts[:exclusive], opts[:exclusive_blocking]) if opts[:exclusive]
begin
timeout(opts[:timeout], Frontkick::TimeoutLocal) do # nil is for no timeout
duration = Benchmark.realtime do
stdin, out, err, wait_thr = Open3.popen3(*cmd_array)
+ out_reader = Thread.new { out.read }
+ err_reader = Thread.new { err.read }
stdin.close
pid = wait_thr.pid
- stdout = out.read
- stderr = err.read
+ stdout = out_reader.value
+ stderr = err_reader.value
exit_code = wait_thr.value.exitstatus
process_wait(pid)
end
end
rescue Frontkick::TimeoutLocal => e