class Maintainer::MaintainerPty
Public Class Methods
spawn(command) { |command_stdout, command_stdin, pid| ... }
click to toggle source
# File lib/maintainer_core/commandRunner.rb, line 18 def self.spawn(command) require 'pty' PTY.spawn(command) do |command_stdout, command_stdin, pid| begin yield(command_stdout, command_stdin, pid) rescue Errno::EIO ensure begin Process.wait(pid) rescue Errno::ECHILD, PTY::ChildExited # The process might have exited. end end end $?.exitstatus rescue LoadError require 'open3' Open3.popen2e(command) do |command_stdin, command_stdout, p| # note the inversion yield(command_stdout, command_stdin, p.value.pid) command_stdin.close command_stdout.close p.value.exitstatus end rescue StandardError => e puts "ERROR: #{e}" raise MaintainerPtyError.new(e, $?.exitstatus) end