2011-03-21 152 views
4

我试图建立一个与RubyGem路边一个文件下载。 (请看This Question。)压缩文件下载到实际的压缩文件中的文件结构

我试图下载一个压缩文件,然后用类文件我想实际上使文件,这样我可以双击它在Finder中(我在OS X)。我将如何去将这个“Curl'ed”正文转换为zip文件。

require 'rubygems' 
require 'curb' 

class Download 
    def start 
    curl = Curl::Easy.new('http://wordpress.org/latest.zip') 
    curl.perform 
    curl.on_body { 
     |d| f = File.new('test.zip', 'w') {|f| f.write d} 
    } 
    end 
end 

dl = Download.new 
dl.start 

我没有收到任何错误,我也找不到任何文件。我尝试过绝对路径,没有任何区别。

+1

你调用'perform',它身上转移后加入'on_body'事件。如果您在调用'curl.perform'之前创建该事件,代码是否工作? – 2011-03-21 20:24:51

+0

啊,当然我必须在'perform'之前调用'on_body'。我也不得不改变File.new参数'“w''到'” a'' – maetthew 2011-03-21 20:31:36

+0

大,很高兴固定它。我将其添加为一个答案,以及让别人也能找到解决办法容易:) – 2011-03-21 20:33:33

回答

2

你打电话perform,其传输体内后加入on_body事件。如果您将事件声明移至perform呼叫之前,这应该起作用。

4

我使用Ruby 2.0

,我的代码是:

curl = Curl::Easy.new('http://somepage.cz/index.html') 
curl.on_body do |d| 
    f = File.open('output_file.html', 'w') {|f| f.write(d)} 
end 
curl.perform 

我不得不改变File.newFile.open没有这个它并没有奏效。 在结束运动curl.perfom也帮助了我。