Используйте блочную форму и прочитайте весь контент:
IO.popen "cmd" do |io|
# 1 array
io.readlines
# alternative, 1 big String
io.read
# or, if you have to do something with the output
io.each do |line|
puts line
end
# if you just want to ignore the output, I'd do
io.each {||}
end
Если вы не читаете вывод, возможно, процесс блокируется, потому что канал, соединяющий другой процесс и ваш процесс, заполнен, и никто не читает из него.