diff options
author | Claire <claire.github-309c@sitedethib.com> | 2021-09-30 00:29:38 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-30 00:29:38 +0200 |
commit | 5e36c3b44c052afb1aa61e2405c595c726bc9503 (patch) | |
tree | 899cb5f54098d08f28dad2c8ee555b3557dead16 /lib/paperclip/attachment_extensions.rb | |
parent | 00889b313176308018d66e54b5cb7dcc92da1587 (diff) | |
parent | 29b5c5f4830f9bda0af352b1d6ac73830a6cfd4e (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.rb | 29 |
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 |