From f66a69076f43617bacfe45961e229268ed15faa7 Mon Sep 17 00:00:00 2001 From: George Claghorn Date: Mon, 10 Jul 2017 16:17:48 -0400 Subject: Expose chunked downloads --- lib/active_storage/blob.rb | 4 ++-- lib/active_storage/service/disk_service.rb | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'lib/active_storage') diff --git a/lib/active_storage/blob.rb b/lib/active_storage/blob.rb index 3336c4ebc3..1a15361747 100644 --- a/lib/active_storage/blob.rb +++ b/lib/active_storage/blob.rb @@ -56,8 +56,8 @@ class ActiveStorage::Blob < ActiveRecord::Base service.upload(key, io, checksum: checksum) end - def download - service.download key + def download(&block) + service.download key, &block end diff --git a/lib/active_storage/service/disk_service.rb b/lib/active_storage/service/disk_service.rb index 87fc06c799..7e64e1e909 100644 --- a/lib/active_storage/service/disk_service.rb +++ b/lib/active_storage/service/disk_service.rb @@ -20,8 +20,8 @@ class ActiveStorage::Service::DiskService < ActiveStorage::Service def download(key) if block_given? instrument :streaming_download, key do - File.open(path_for(key)) do |file| - while data = file.binread(64.kilobytes) + File.open(path_for(key), 'rb') do |file| + while data = file.read(64.kilobytes) yield data end end @@ -55,7 +55,7 @@ class ActiveStorage::Service::DiskService < ActiveStorage::Service instrument :url, key do |payload| verified_key_with_expiration = ActiveStorage::VerifiedKeyWithExpiration.encode(key, expires_in: expires_in) - generated_url = + generated_url = if defined?(Rails) && defined?(Rails.application) Rails.application.routes.url_helpers.rails_disk_blob_path(verified_key_with_expiration, disposition: disposition, filename: filename) else @@ -63,7 +63,7 @@ class ActiveStorage::Service::DiskService < ActiveStorage::Service end payload[:url] = generated_url - + generated_url end end -- cgit v1.2.3