scinote-web/app/jobs/pdf_preview_job.rb

24 lines
734 B
Ruby

# frozen_string_literal: true
# Provides asynchronous generation of image previews for ActiveStorage::Blob records.
class PdfPreviewJob < ApplicationJob
queue_as :assets
discard_on StandardError do |job, error|
asset = Asset.find_by(id: job.arguments.first)
ActiveRecord::Base.no_touching do
asset&.update(pdf_preview_processing: false)
end
Rails.logger.error("Couldn't generate PDF preview for Asset with id: #{job.arguments.first}. Error:\n #{error}")
end
discard_on ActiveRecord::RecordNotFound
def perform(asset_id)
asset = Asset.find(asset_id)
PdfPreviewService.new(asset.file.blob, asset.file_pdf_preview).generate!
ensure
asset.update(pdf_preview_processing: false)
end
end