В настоящее время я использую Net::HTTP в сценарии Ruby для публикации файлов на веб-сайте через многостраничную форму публикации. Он отлично работает с небольшими файлами, но мне часто приходится отправлять очень большие файлы с помощью этого сценария, а HTTP#post, кажется, принимает только почтовые данные как объект String, что означает, что отправляемый файл должен быть прочитан в память, прежде чем что-либо можно отправить. Этот сценарий выполняется на загруженном производственном сервере, поэтому недопустимо поглощать сотни мегабайт оперативной памяти только для того, чтобы отправить файл.
В идеале был бы метод, которому можно было бы задать размер буфера и объект IO, и который бы отправлял фрагменты данных размером с буфер, считывая из объекта IO только по мере необходимости. Как лучше всего добиться этого? Пропустил ли я что-то актуальное в Net::HTTP?
Обновлять: Net::HTTP#body_stream(input) выглядит неплохо, хотя документация довольно ... скудная. Кто-нибудь может указать мне на хороший пример этого в действии?

На самом деле мне удалось загрузить файл с помощью body_stream. Полный исходный код находится здесь: http://stanislavvitvitskiy.blogspot.com/2008/12/multipart-post-in-ruby.html
В конечном итоге я просто покопался в исходном коде Net / HTTP, чтобы понять, как использовать body_stream, что было настоящей головной болью. Изменения, которые я внес в составной код, который я опубликовал в ответ на этот другой вопрос, в конечном итоге очень похожи на ваши. Жаль, что это не встроено.
Эта ссылка не работает