Eu costumo usar Open3.popen3 em meus scripts CGI Ruby para iniciar um comando Linux, analisar sua saída padrão e converter os bytes para a codificação de transferência em partes ( link )
th<<Thread.new do
counter=0
while data=stdout.read(64*1024)
STDOUT.puts "#{data.size.to_s(16)};"
STDOUT.print data
STDOUT.puts
counter+=data.size
end
STDOUT.puts "0"
STDOUT.puts "Content-Length: #{counter}"
STDOUT.puts
end
th.join
Gostaria de saber se talvez já existe um utilitário / filtro de linha de comando do Linux que faz esse trabalho específico: contar os bytes, imprimir os blocos com os cabeçalhos adequados e o rodapé de fechamento com o tamanho do conteúdo contado. Então eu simplesmente poderia canalizar a saída do comando para esse filtro, sem necessidade de Open3.popen3, acho que a conversão seria mais rápida.
Tags ruby pipe cgi http data-transfer