Leitura contínua do STDOUT do processo externo em Ruby

Eu quero executar o Blender a partir da linha de comando através de um script ruby, que irá então processar a saída dada pelo liquidificador linha por linha para atualizar uma barra de progresso em uma GUI. Não é realmente importante que o liquidificador seja o processo externo cujo stdout eu preciso ler.

Parece que não consigo captar as mensagens de progresso que o liquidificador normalmente imprime no shell quando o processo do liquidificador ainda está em execução e tentei algumas maneiras. Eu sempre pareço acessar o stdout do liquidificadordepois de O liquidificador parou, não enquanto ainda está em execução.

Aqui está um exemplo de uma tentativa fracassada. Ele obtém e imprime as primeiras 25 linhas da saída do liquidificador, mas somente após o processo do liquidificador ter saído:

blender = nil
t = Thread.new do
  blender = open "| blender -b mball.blend -o //renders/ -F JPEG -x 1 -f 1"
end
puts "Blender is doing its job now..."
25.times { puts blender.gets}

Editar:

Para torná-lo um pouco mais claro, o comando chamando liquidificador retorna um fluxo de saída no shell, indicando o progresso (parte 1-16 concluída etc). Parece que qualquer chamada para "receber" a saída é bloqueada até que o liquidificador seja encerrado. A questão é como obter acesso a essa saída enquanto o blender ainda está em execução, já que o blender imprime sua saída para o shell.

questionAnswers(4)

yourAnswerToTheQuestion