Я написал следующий фрагмент, чтобы загрузить некоторые файлы, которые мне нужны.
require 'open-uri'
MEGABYTE = 1024.0 * 1024.0
def bytes_to_megabytes(bytes)
bytes / MEGABYTE
end
class Downloader
class << self
attr_accessor :size
def get(resource)
open(resource,
content_length_proc: proc do |t|
size = bytes_to_megabytes(t).round
puts "Total size is: #{size}"
end,
progress_proc: proc do |step|
# size won't print here!
puts "Downloading #{bytes_to_megabytes(step).round} out of #{size}"
end )
end
end
end
Проблема в том, что общий размер не будет напечатан в последней строке, даже если он уже был установлен в content_length_proc
.
Почему это происходит?