Скачать и записать файлы .tar.gz без повреждений - PullRequest
4 голосов
/ 20 апреля 2010

Как вы загружаете файлы, в частности .zip и .tar.gz, с помощью Ruby и записываете их на диск?

-
Этот вопрос изначально был характерен для ошибки в MacRuby, но ответы относятся к вышеуказанному общему вопросу. Используя MacRuby, я обнаружил, что файл выглядит так же, как ссылка (в размер), но архивы отказываются извлекать. То, что я пытаюсь сейчас сделать, это: https://gist.github.com/arbales/8203385
Thanks!

Ответы [ 3 ]

11 голосов
/ 01 мая 2010

Я успешно загрузил и распаковал файлы GZip с этим кодом:

require 'open-uri'
require 'zlib'

open('tarball.tar', 'w') do |local_file|
  open('http://github.com/jashkenas/coffee-script/tarball/master/tarball.tar.gz') do |remote_file|
    local_file.write(Zlib::GzipReader.new(remote_file).read)
  end
end
3 голосов
/ 20 апреля 2010

Я бы рекомендовал использовать open-uri в rud's stdlib.

require 'open-uri'

open(out_file, 'w') do |out|
  out.write(open(url).read)
end

http://ruby -doc.org / stdlib / libdoc / open-uri / rdoc / classes / OpenURI / OpenRead.html # M000832

Убедитесь, что вы смотрите на параметр: progress_proc, чтобы открыть его так, как будто вы хотите обработчик прогресса.

1 голос
/ 30 апреля 2010

В последний раз я получал обрезанные файлы с помощью Ruby, когда забыл позвонить file.binmode сразу после File.open. У меня ушло несколько часов, чтобы выяснить, в чем дело. Помогает ли это в вашей проблеме?

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