aboutsummaryrefslogtreecommitdiffstats
path: root/activestorage/lib/active_storage/service/gcs_service.rb
diff options
context:
space:
mode:
authorGeorge Claghorn <george.claghorn@gmail.com>2018-08-22 22:56:10 -0400
committerGitHub <noreply@github.com>2018-08-22 22:56:10 -0400
commitdc001dbd58cde8b2caab42ab1bcdd88774818c53 (patch)
tree4704d8e8959bcd6569cc4244ec131e7dbedf87bc /activestorage/lib/active_storage/service/gcs_service.rb
parentcdee52079cdd88d376d9664a61a40348d45e819c (diff)
parent22efb2ec49087827ca1cb28a8bad9f016800c591 (diff)
downloadrails-dc001dbd58cde8b2caab42ab1bcdd88774818c53.tar.gz
rails-dc001dbd58cde8b2caab42ab1bcdd88774818c53.tar.bz2
rails-dc001dbd58cde8b2caab42ab1bcdd88774818c53.zip
Merge pull request #33666 from cbothner/fail-gracefully-from-activestorage-file-not-found
Fail more gracefully from ActiveStorage missing file exceptions
Diffstat (limited to 'activestorage/lib/active_storage/service/gcs_service.rb')
-rw-r--r--activestorage/lib/active_storage/service/gcs_service.rb14
1 files changed, 12 insertions, 2 deletions
diff --git a/activestorage/lib/active_storage/service/gcs_service.rb b/activestorage/lib/active_storage/service/gcs_service.rb
index eb46973509..18c0f14cfc 100644
--- a/activestorage/lib/active_storage/service/gcs_service.rb
+++ b/activestorage/lib/active_storage/service/gcs_service.rb
@@ -34,14 +34,22 @@ module ActiveStorage
end
else
instrument :download, key: key do
- file_for(key).download.string
+ begin
+ file_for(key).download.string
+ rescue Google::Cloud::NotFoundError
+ raise ActiveStorage::FileNotFoundError
+ end
end
end
end
def download_chunk(key, range)
instrument :download_chunk, key: key, range: range do
- file_for(key).download(range: range).string
+ begin
+ file_for(key).download(range: range).string
+ rescue Google::Cloud::NotFoundError
+ raise ActiveStorage::FileNotFoundError
+ end
end
end
@@ -116,6 +124,8 @@ module ActiveStorage
chunk_size = 5.megabytes
offset = 0
+ raise ActiveStorage::FileNotFoundError unless file.present?
+
while offset < file.size
yield file.download(range: offset..(offset + chunk_size - 1)).string
offset += chunk_size