我有一個紅寶石bash腳本來下載一個zip文件並輸出一個進度條到標準輸出。我有以下紅寶石不能轉換哈希到Int
# Temp file name
tmp = ActiveSupport::SecureRandom.hex(8)
file = temp_dl_dir+tmp+'.zip'
print file.inspect
# Download
progress_bar = nil
open(file, 'w', :content_length_proc => lambda { |length|
if length && 0 < length
progress_bar = ProgressBar.new('...', length)
progress_bar.file_transfer_mode
end
},
:progress_proc => lambda { |progress|
progress_bar.set(progress) if progress_bar
}) do |fo|
fo.print open(dl).read
end
但是當我運行它,我得到
open-uri.rb:32:in `initialize': can't convert Hash into Integer (TypeError)
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:32:in `open_uri_original_open'
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:32:in `open'
from ./site.rb:191 (line 191 is the open(file, 'w' ...) one)
這意味着有與我open(file, 'w' ...
功能
一個問題,我想不出有什麼不對+ _ +
我只是要問同樣的事情。抱怨哪一行是堆棧跟蹤? – nickgroenke
191行是打開的(文件'w',...)一行32行是'def is_dir?(directory)' – Steven
哦,我不知道這個問題是否與第三個參數打開? open中的第三個參數是「:content_length_proc => lambda ...」,它是一個散列。堆棧跟蹤正在討論open-uri.rb:32。所以也許這個打開的電話會期待第三個參數是一個Int。 – nickgroenke