about summary refs log tree commit diff
path: root/lib/paperclip/attachment_extensions.rb
diff options
context:
space:
mode:
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