MultIO Ruby IO multiplexer
All across the Internet, Rubyists load entire files into memory to create multipart HTTP POST requests, seemingly unaware of Net::HTTP
’s ability to stream an IO
-like object using Net::HTTPGenericRequest#body_stream=
. All it needs is an object that implements read(length)
. So, here we go, a multipart HTTP POST without loading the entire file into memory at once.
The MultIO
class is an Array
but you should use MultIO#<<
to append new String
s, File
s or other IO
-like objects. In order to use MultIO
with Net::HTTP
, all objects appended need to be able to find their size so the Content-Length
header can be set.
The whole shebang: http://gist.github.com/493562.