Позвоните .size
на то, что вы напишите в временный файл?
Или, если это через HTTP, вы можете получить длину содержимого только из заголовков. Пример:
require 'net/http'
response = nil
# Just get headers
Net::HTTP.start('stackoverflow.com', 80) do |http|
response = http.head('/')
end
puts response.content_length
# Get the entire response
Net::HTTP.start('stackoverflow.com', 80) do |http|
response = http.get('/')
end
puts response.body.size
Обратите внимание, что если сервер не предоставляет длину контента (часто в случае динамического контента), то response.content_length
будет nil
.