aboutsummaryrefslogtreecommitdiffstats
path: root/lib/active_storage/service/gcs_service.rb
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2017-07-09 17:04:28 +0200
committerDavid Heinemeier Hansson <david@loudthinking.com>2017-07-09 17:04:28 +0200
commit4bfe7af68f1e1a7d02ace760ac1a5c5a4462edb2 (patch)
tree62e0823e734c6a2e573811e2c483e771b70529f2 /lib/active_storage/service/gcs_service.rb
parent57fd9d2247ea4c5058cad1998e4ec32325c4c7e3 (diff)
downloadrails-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.rb38
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