Zwykle używam Open3.popen3 w moich skryptach Ruby CGI, aby uruchomić polecenie Linuksa, przeanalizować jego standardowe wyjście i przekonwertować bajty na kodowanie przesyłania fragmentarycznego ( https://en.wikipedia.org/wiki/Chunked_transfer_encoding )

 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

Zastanawiam się, czy może już istnieje narzędzie / filtr wiersza poleceń systemu Linux, które wykonują tę konkretną pracę: zliczanie bajtów, drukowanie fragmentów z odpowiednimi nagłówkami i stopka zamykająca z policzoną długością treści. Więc po prostu mógłbym potokować wyjście polecenia do tego filtra, bez potrzeby Open3.popen3, myślę, że konwersja byłaby szybsza.

Konstantin
źródło