Class: GeneratedPdfCleanupWorker
- Inherits:
-
Object
- Object
- GeneratedPdfCleanupWorker
- Includes:
- Sidekiq::Job
- Defined in:
- app/workers/generated_pdf_cleanup_worker.rb
Overview
Reaps stale GeneratedPdf records — pending longer than
GeneratedPdf::STALE_AFTER (48 h), meaning the user never acted on the review
page. Destroying the record also removes its staged Dragonfly blob (the
dragonfly_accessor installs the after-destroy cleanup).
Scheduled daily via config/sidekiq_production_schedule.yml, mirroring
+GeneratedImageCleanupWorker+.
Instance Method Summary collapse
Instance Method Details
#perform ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'app/workers/generated_pdf_cleanup_worker.rb', line 15 def perform scope = GeneratedPdf.stale unless scope.exists? Rails.logger.info '[GeneratedPdfCleanupWorker] No stale records to clean up' return end Rails.logger.info "[GeneratedPdfCleanupWorker] Cleaning #{scope.count} stale record(s)" deleted = 0 errored = 0 # Batch so a large backlog doesn't load every record into memory at once. scope.find_each(batch_size: 200) do |gen| gen.destroy! deleted += 1 rescue StandardError => e errored += 1 Rails.logger.error "[GeneratedPdfCleanupWorker] Failed to clean GeneratedPdf #{gen.id}: #{e.}" ErrorReporting.warning(e) if defined?(ErrorReporting) end Rails.logger.info "[GeneratedPdfCleanupWorker] Done — deleted: #{deleted}, errors: #{errored}" end |