我正在尝试使用RubyGem Curb构建一个文件下载器。 (请查看This Question。)
我正在尝试下载一个zip文件,然后使用类File我正在尝试实际制作该文件,以便我可以在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
我没有收到任何错误,也找不到任何文件。我尝试过绝对路径没有区别。
答案 0 :(得分: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.new
更改为File.open
,否则它无效。
最后移动curl.perfom
对我有帮助。
答案 1 :(得分:2)
您在调用转移正文的on_body
后添加perform
事件。如果您将事件声明移到perform
调用之前,这应该可以。