下载并编写.tar.gz文件而不会损坏

arb*_*les 4 ruby http file download

你如何使用Ruby下载文件,特别是.zip和.tar.gz,并将它们写入磁盘?

-
这个问题最初是针对MacRuby中的一个错误,但答案与上述一般问题相关.

使用MacRuby,我发现该文件看起来与引用(大小)相同,但是档案拒绝提取.我现在正在尝试的是:https://gist.github.com/arbales/8203385
谢谢!

The*_*heo 11

我已经使用以下代码成功下载并解压缩了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
Run Code Online (Sandbox Code Playgroud)

  • 我更改了代码以包含您在示例中使用的URL,并且它在Ruby 1.8.7,1.9.1,Rubinius 1.0.0 RC2和JRuby 1.4.0中运行良好.但是,当在MacRuby 0.5中运行时,它会保存一个乱码文件.我不知道为什么,但它肯定是MacRuby中的一个错误. (4认同)
  • 我也尝试使用HTTParty重写代码,结果相同(但HTTParty可能使用与open-uri相同的机制,所以这并不奇怪). (2认同)