What are the best practices for reading and writing binary data in Ruby?
In the code sample below I needed to send a binary file using over HTTP (as POST data):
class SimpleHandler < Mongrel::HttpHandler
def process(request, response)
response.start(200) do |head,out|
head["Content-Type"] = "application/ocsp-responder"
f = File.new("resp.der", "r")
begin
while true
out.syswrite(f.sysread(1))
end
rescue EOFError => err
puts "Sent response."
end
end
end
end
While this code seems to do a good job, it probably isn’t very idiomatic. How can I improve it?
Then FileUtils copy_stream might be of use.
Maybe not exactly what you asked for but if it’s the whole HTTP POST files issue you want to solve then HTTPClient can do it for you:Also I’ve heard that Nick Siegers multipart-post is good but I haven’t used it.