aboutsummaryrefslogtreecommitdiffstats
path: root/activestorage/app/models/active_storage/blob.rb
diff options
context:
space:
mode:
authorGeorge Claghorn <george@basecamp.com>2018-05-16 22:12:31 -0400
committerGeorge Claghorn <george@basecamp.com>2018-05-16 22:12:31 -0400
commitee21b7c2eb64def8f00887a9fafbd77b85f464f1 (patch)
treef7aae9cbf8ed6dd0921e9cf22ef14e1da7a3273f /activestorage/app/models/active_storage/blob.rb
parentbfe4248c78ce6e93ebba8c7b9ada1c68cd79bb85 (diff)
downloadrails-ee21b7c2eb64def8f00887a9fafbd77b85f464f1.tar.gz
rails-ee21b7c2eb64def8f00887a9fafbd77b85f464f1.tar.bz2
rails-ee21b7c2eb64def8f00887a9fafbd77b85f464f1.zip
Add ActiveStorage::Blob#open
[David Robertson & George Claghorn]
Diffstat (limited to 'activestorage/app/models/active_storage/blob.rb')
-rw-r--r--activestorage/app/models/active_storage/blob.rb7
1 files changed, 7 insertions, 0 deletions
diff --git a/activestorage/app/models/active_storage/blob.rb b/activestorage/app/models/active_storage/blob.rb
index b8b3b62f22..9bf0766843 100644
--- a/activestorage/app/models/active_storage/blob.rb
+++ b/activestorage/app/models/active_storage/blob.rb
@@ -1,5 +1,7 @@
# frozen_string_literal: true
+require "active_storage/downloader"
+
# A blob is a record that contains the metadata about a file and a key for where that file resides on the service.
# Blobs can be created in two ways:
#
@@ -164,6 +166,11 @@ class ActiveStorage::Blob < ActiveRecord::Base
service.download key, &block
end
+ # Downloads the blob to a tempfile on disk. Yields the tempfile.
+ def open(&block)
+ ActiveStorage::Downloader.new(self).download_blob_to_tempfile(&block)
+ end
+
# Deletes the file on the service that's associated with this blob. This should only be done if the blob is going to be
# deleted as well or you will essentially have a dead reference. It's recommended to use the +#purge+ and +#purge_later+