diff options
author | George Claghorn <george@basecamp.com> | 2018-05-16 22:12:31 -0400 |
---|---|---|
committer | George Claghorn <george@basecamp.com> | 2018-05-16 22:12:31 -0400 |
commit | ee21b7c2eb64def8f00887a9fafbd77b85f464f1 (patch) | |
tree | f7aae9cbf8ed6dd0921e9cf22ef14e1da7a3273f /activestorage/app/models | |
parent | bfe4248c78ce6e93ebba8c7b9ada1c68cd79bb85 (diff) | |
download | rails-ee21b7c2eb64def8f00887a9fafbd77b85f464f1.tar.gz rails-ee21b7c2eb64def8f00887a9fafbd77b85f464f1.tar.bz2 rails-ee21b7c2eb64def8f00887a9fafbd77b85f464f1.zip |
Add ActiveStorage::Blob#open
[David Robertson & George Claghorn]
Diffstat (limited to 'activestorage/app/models')
-rw-r--r-- | activestorage/app/models/active_storage/blob.rb | 7 | ||||
-rw-r--r-- | activestorage/app/models/active_storage/variant.rb | 6 |
2 files changed, 8 insertions, 5 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+ diff --git a/activestorage/app/models/active_storage/variant.rb b/activestorage/app/models/active_storage/variant.rb index b782489a92..2a7006553c 100644 --- a/activestorage/app/models/active_storage/variant.rb +++ b/activestorage/app/models/active_storage/variant.rb @@ -1,7 +1,5 @@ # frozen_string_literal: true -require "active_storage/downloading" - # Image blobs can have variants that are the result of a set of transformations applied to the original. # These variants are used to create thumbnails, fixed-size avatars, or any other derivative image from the # original. @@ -53,8 +51,6 @@ require "active_storage/downloading" # * {ImageProcessing::Vips}[https://github.com/janko-m/image_processing/blob/master/doc/vips.md#methods] # * {ruby-vips reference}[http://www.rubydoc.info/gems/ruby-vips/Vips/Image] class ActiveStorage::Variant - include ActiveStorage::Downloading - WEB_IMAGE_CONTENT_TYPES = %w( image/png image/jpeg image/jpg image/gif ) attr_reader :blob, :variation @@ -98,7 +94,7 @@ class ActiveStorage::Variant end def process - download_blob_to_tempfile do |image| + blob.open do |image| transform image do |output| upload output end |