diff options
author | David Heinemeier Hansson <david@loudthinking.com> | 2017-07-09 17:04:28 +0200 |
---|---|---|
committer | David Heinemeier Hansson <david@loudthinking.com> | 2017-07-09 17:04:28 +0200 |
commit | 4bfe7af68f1e1a7d02ace760ac1a5c5a4462edb2 (patch) | |
tree | 62e0823e734c6a2e573811e2c483e771b70529f2 /lib/active_storage/service/gcs_service.rb | |
parent | 57fd9d2247ea4c5058cad1998e4ec32325c4c7e3 (diff) | |
download | rails-4bfe7af68f1e1a7d02ace760ac1a5c5a4462edb2.tar.gz rails-4bfe7af68f1e1a7d02ace760ac1a5c5a4462edb2.tar.bz2 rails-4bfe7af68f1e1a7d02ace760ac1a5c5a4462edb2.zip |
Instrument and log the services
Diffstat (limited to 'lib/active_storage/service/gcs_service.rb')
-rw-r--r-- | lib/active_storage/service/gcs_service.rb | 38 |
1 files changed, 28 insertions, 10 deletions
diff --git a/lib/active_storage/service/gcs_service.rb b/lib/active_storage/service/gcs_service.rb index e09fa484ff..bca4ab5331 100644 --- a/lib/active_storage/service/gcs_service.rb +++ b/lib/active_storage/service/gcs_service.rb @@ -10,29 +10,47 @@ class ActiveStorage::Service::GCSService < ActiveStorage::Service end def upload(key, io, checksum: nil) - bucket.create_file(io, key, md5: checksum) - rescue Google::Cloud::InvalidArgumentError - raise ActiveStorage::IntegrityError + instrument :upload, key, checksum: checksum do + begin + bucket.create_file(io, key, md5: checksum) + rescue Google::Cloud::InvalidArgumentError + raise ActiveStorage::IntegrityError + end + end end # FIXME: Add streaming when given a block def download(key) - io = file_for(key).download - io.rewind - io.read + instrument :download, key do + io = file_for(key).download + io.rewind + io.read + end end def delete(key) - file_for(key)&.delete + instrument :delete, key do + file_for(key)&.delete + end end def exist?(key) - file_for(key).present? + instrument :exist, key do |payload| + answer = file_for(key).present? + payload[:exist] = answer + answer + end end def url(key, expires_in:, disposition:, filename:) - file_for(key).signed_url(expires: expires_in) + "&" + - { "response-content-disposition" => "#{disposition}; filename=\"#{filename}\"" }.to_query + instrument :url, key do |payload| + generated_url = file_for(key).signed_url(expires: expires_in) + "&" + + { "response-content-disposition" => "#{disposition}; filename=\"#{filename}\"" }.to_query + + payload[:url] = generated_url + + generated_url + end end private |