Немного поздно, но взгляните на Open3.popen2e
- документы .
Это ведет себя точно как popen3
, но объединяет stderr
stdout
как второй аргументв блок.
Так что вы можете просто сделать
cmd = 'a_prog --arg ... --arg2 ...'
Open3.popen2e(cmd) { |input,output|
# Process as desired, with output containing stdout and stderr
}