From 0d811fd4826e9a8b3d493a32d1315b681263ad3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Janko=20Marohni=C4=87?= Date: Sun, 22 Apr 2018 23:43:11 +0200 Subject: Ensure result file is deleted on uploading errors --- activestorage/app/models/active_storage/variant.rb | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'activestorage/app/models/active_storage/variant.rb') 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) -- cgit v1.2.3