aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activestorage/app/models/active_storage/variant.rb14
1 files changed, 10 insertions, 4 deletions
diff --git a/activestorage/app/models/active_storage/variant.rb b/activestorage/app/models/active_storage/variant.rb
index 450ce3677f..8ee9e75d6b 100644
--- a/activestorage/app/models/active_storage/variant.rb
+++ b/activestorage/app/models/active_storage/variant.rb
@@ -100,9 +100,9 @@ class ActiveStorage::Variant
def process
download_blob_to_tempfile do |image|
- variant = transform image
- upload variant
- variant.close!
+ transform image do |output|
+ upload output
+ end
end
end
@@ -121,7 +121,13 @@ class ActiveStorage::Variant
def transform(image)
format = "png" unless WEB_IMAGE_CONTENT_TYPES.include?(blob.content_type)
- variation.transform(image, format: format)
+ result = variation.transform(image, format: format)
+
+ begin
+ yield result
+ ensure
+ result.close!
+ end
end
def upload(file)