Sha256: 69d937986c415d902803d74613e0de32a3e122e566abe873c236084d852110e3

Contents?: true

Size: 1.98 KB

Versions: 22

Compression:

Stored size: 1.98 KB

Contents

module BetterRecord
  class ResizeBlobImageJob < ApplicationJob
    queue_as :default

    def perform(**params)
      begin
        if record = params[:model].constantize.find_by(params[:query].deep_symbolize_keys)
          name = params[:attachment].to_sym
          blob = record.__send__(name).blob
          tmp = Tempfile.new
          tmp.binmode
          tmp.write(blob.service.download(blob.variant(blob.filename.to_s =~ /-resized/ ? {resize: '70%'} : params[:options]).processed.key))
          tmp.flush
          tmp.rewind

          blob.analyze if blob.filename.to_s =~ /-resized/

          attachment = ActionDispatch::Http::UploadedFile.new(
            tempfile: tmp,
            filename: blob.filename.to_s.sub(/(\.[^.]*)$/, '-resized\1').sub(/(-resized)+/, '-resized'),
            type: blob.content_type
          )

          begin
            record.
              __send__ :delete_attachment, name, true

            record.
              reload.
              __send__(name).
              attach(attachment)
          rescue
            puts "Attachment No Longer Exists"
            puts $!.message
            puts $!.backtrace
          end

          puts "\n\nSAVED IMAGE\n\n"
          begin
            if params[:backup_action].present?
              record.class.find_by(params[:query]).__send__(params[:backup_action].to_sym)
            end
          rescue
            puts "BACKUP ACTION FAILED"
            puts $!.message
            puts $!.backtrace
          end
          begin
            puts "\n\n PURGING BLOB \n\n"
            puts "blob exists? #{blob = ActiveStorage::Blob.find_by(id: blob.id).present?}"
            blob.purge if blob.present?
            puts "\n\n FINISHED PURGING BLOB \n\n"
          rescue
          end
        else
          raise ActiveRecord::RecordNotFound
        end
        return true
      rescue
        "ERROR RESIZING IMAGE"
        puts $!.message
        puts $!.backtrace.first(25)
        return false
      end
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
better_record-0.25.2 app/jobs/better_record/resize_blob_image_job.rb
better_record-0.25.1 app/jobs/better_record/resize_blob_image_job.rb
better_record-0.25.0 app/jobs/better_record/resize_blob_image_job.rb
better_record-0.24.4 app/jobs/better_record/resize_blob_image_job.rb
better_record-0.24.3 app/jobs/better_record/resize_blob_image_job.rb
better_record-0.23.7 app/jobs/better_record/resize_blob_image_job.rb
better_record-0.23.6 app/jobs/better_record/resize_blob_image_job.rb
better_record-0.23.5 app/jobs/better_record/resize_blob_image_job.rb
better_record-0.23.4 app/jobs/better_record/resize_blob_image_job.rb
better_record-0.23.3 app/jobs/better_record/resize_blob_image_job.rb
better_record-0.22.9 app/jobs/better_record/resize_blob_image_job.rb
better_record-0.22.8 app/jobs/better_record/resize_blob_image_job.rb
better_record-0.22.7 app/jobs/better_record/resize_blob_image_job.rb
better_record-0.22.6 app/jobs/better_record/resize_blob_image_job.rb
better_record-0.22.5 app/jobs/better_record/resize_blob_image_job.rb
better_record-0.22.4 app/jobs/better_record/resize_blob_image_job.rb
better_record-0.22.3 app/jobs/better_record/resize_blob_image_job.rb
better_record-0.21.3 app/jobs/better_record/resize_blob_image_job.rb
better_record-0.22.2 app/jobs/better_record/resize_blob_image_job.rb
better_record-0.22.0 app/jobs/better_record/resize_blob_image_job.rb