about summary refs log tree commit diff
path: root/lib/paperclip/attachment_extensions.rb
diff options
context:
space:
mode:
authorClaire <claire.github-309c@sitedethib.com>2021-09-30 00:29:38 +0200
committerGitHub <noreply@github.com>2021-09-30 00:29:38 +0200
commit5e36c3b44c052afb1aa61e2405c595c726bc9503 (patch)
tree899cb5f54098d08f28dad2c8ee555b3557dead16 /lib/paperclip/attachment_extensions.rb
parent00889b313176308018d66e54b5cb7dcc92da1587 (diff)
parent29b5c5f4830f9bda0af352b1d6ac73830a6cfd4e (diff)
Merge pull request #1612 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes
Diffstat (limited to 'lib/paperclip/attachment_extensions.rb')
-rw-r--r--lib/paperclip/attachment_extensions.rb29
1 files changed, 29 insertions, 0 deletions
diff --git a/lib/paperclip/attachment_extensions.rb b/lib/paperclip/attachment_extensions.rb
index 271f8b603..786f558e9 100644
--- a/lib/paperclip/attachment_extensions.rb
+++ b/lib/paperclip/attachment_extensions.rb
@@ -6,6 +6,35 @@ module Paperclip
       instance_read(:meta)
     end
 
+    # monkey-patch to avoid unlinking too avoid unlinking source file too early
+    # see https://github.com/kreeti/kt-paperclip/issues/64
+    def post_process_style(name, style) #:nodoc:
+      raise "Style #{name} has no processors defined." if style.processors.blank?
+
+      intermediate_files = []
+      original = @queued_for_write[:original]
+      # if we're processing the original, close + unlink the source tempfile
+      intermediate_files << original if name == :original
+
+      @queued_for_write[name] = style.processors.
+                                inject(original) do |file, processor|
+        file = Paperclip.processor(processor).make(file, style.processor_options, self)
+        intermediate_files << file unless file == original
+        file
+      end
+
+      unadapted_file = @queued_for_write[name]
+      @queued_for_write[name] = Paperclip.io_adapters.
+                                for(@queued_for_write[name], @options[:adapter_options])
+      unadapted_file.close if unadapted_file.respond_to?(:close)
+      @queued_for_write[name]
+    rescue Paperclip::Errors::NotIdentifiedByImageMagickError => e
+      log("An error was received while processing: #{e.inspect}")
+      (@errors[:processing] ||= []) << e.message if @options[:whiny]
+    ensure
+      unlink_files(intermediate_files)
+    end
+
     # We overwrite this method to support delayed processing in
     # Sidekiq. Since we process the original file to reduce disk
     # usage, and we still want to generate thumbnails straight