aboutsummaryrefslogtreecommitdiffstats
path: root/activestorage/lib/active_storage/service/s3_service.rb
diff options
context:
space:
mode:
authorJeffrey Guenther <guenther.jeffrey@gmail.com>2017-11-09 09:31:16 -0800
committerJeffrey Guenther <guenther.jeffrey@gmail.com>2017-11-09 09:31:16 -0800
commitd0550ff6717f18961493ab065ff2eebed6199525 (patch)
treef5ff24082dd79e429b7a33e8fe217ffa3bc0b02b /activestorage/lib/active_storage/service/s3_service.rb
parentd58078d8d65de38d9dca9c629c91e13df291dbb3 (diff)
parent5961d6882bc3a6aaa2b3735e7a8cbe3f2fb901af (diff)
downloadrails-d0550ff6717f18961493ab065ff2eebed6199525.tar.gz
rails-d0550ff6717f18961493ab065ff2eebed6199525.tar.bz2
rails-d0550ff6717f18961493ab065ff2eebed6199525.zip
Merge branch 'master' into activestorage-guide
Diffstat (limited to 'activestorage/lib/active_storage/service/s3_service.rb')
-rw-r--r--activestorage/lib/active_storage/service/s3_service.rb6
1 files changed, 3 insertions, 3 deletions
diff --git a/activestorage/lib/active_storage/service/s3_service.rb b/activestorage/lib/active_storage/service/s3_service.rb
index 3e93cdd072..6957119780 100644
--- a/activestorage/lib/active_storage/service/s3_service.rb
+++ b/activestorage/lib/active_storage/service/s3_service.rb
@@ -26,7 +26,7 @@ module ActiveStorage
end
end
- def download(key)
+ def download(key, &block)
if block_given?
instrument :streaming_download, key do
stream(key, &block)
@@ -85,14 +85,14 @@ module ActiveStorage
end
# Reads the object for the given key in chunks, yielding each to the block.
- def stream(key, options = {}, &block)
+ def stream(key)
object = object_for(key)
chunk_size = 5.megabytes
offset = 0
while offset < object.content_length
- yield object.read(options.merge(range: "bytes=#{offset}-#{offset + chunk_size - 1}"))
+ yield object.get(range: "bytes=#{offset}-#{offset + chunk_size - 1}").body.read.force_encoding(Encoding::BINARY)
offset += chunk_size
end
end