Лучшие практики для обработки двоичных данных в Ruby? - PullRequest
3 голосов
/ 16 апреля 2010

Каковы лучшие практики чтения и записи двоичных данных в Ruby?

В приведенном ниже примере кода мне нужно было отправить двоичный файл, используя HTTP (как данные POST):

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

Хотя этот код, кажется, хорошо работает, он, вероятно, не очень идиоматичен. Как я могу улучшить это?

1 Ответ

3 голосов
/ 16 апреля 2010

Тогда FileUtils copy_stream может быть полезным.

require 'fileutils'
fin = File.new('svarttag.jpg')
fout = File.new('blacktrain.jpg','w')
FileUtils.copy_stream(fin,fout)
fin.close
fout.close

Возможно, это не совсем то, что вы просили, но если вы хотите решить проблему HTTP POST, тогда HTTPClient может сделать это за вас:

require 'httpclient'    
HTTPClient.post 'http://nl.netlog.com/test', { :file => File.new('resp.der') }

Также я слышал, что Ник Зигерс multipart-post хорош, но я не использовал его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...