diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2020-03-08 23:56:18 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-08 23:56:18 +0100 |
commit | 9660aa4543deff41c60d131e081137f84e771499 (patch) | |
tree | 8809339341484045802fa46526c798ad0e68fb2c /lib | |
parent | 764b89939fe2fcb8c4389738af8685949104c144 (diff) |
Change local media attachments to perform heavy processing asynchronously (#13210)
Fix #9106
Diffstat (limited to 'lib')
-rw-r--r-- | lib/paperclip/attachment_extensions.rb | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/paperclip/attachment_extensions.rb b/lib/paperclip/attachment_extensions.rb new file mode 100644 index 000000000..3b308af5f --- /dev/null +++ b/lib/paperclip/attachment_extensions.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +module Paperclip + module AttachmentExtensions + # 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 + # away, it's the only style we need to exclude + def process_style?(style_name, style_args) + if style_name == :original && instance.respond_to?(:delay_processing?) && instance.delay_processing? + false + else + style_args.empty? || style_args.include?(style_name) + end + end + + def reprocess_original! + old_original_path = path(:original) + reprocess!(:original) + new_original_path = path(:original) + + if new_original_path != old_original_path + @queued_for_delete << old_original_path + flush_deletes + end + end + end +end + +Paperclip::Attachment.prepend(Paperclip::AttachmentExtensions) |