From f556b39910bb6c62aad43cc5495eaee493534135 Mon Sep 17 00:00:00 2001 From: Christophe Robillard Date: Thu, 28 Jul 2022 08:42:29 +0200 Subject: [PATCH] fix(db): remove bad attachments destroy attachments with blobs that doesn't exist --- .../20220728062218_cleanup_attachments.rake | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 lib/tasks/deployment/20220728062218_cleanup_attachments.rake diff --git a/lib/tasks/deployment/20220728062218_cleanup_attachments.rake b/lib/tasks/deployment/20220728062218_cleanup_attachments.rake new file mode 100644 index 000000000..6f3f58508 --- /dev/null +++ b/lib/tasks/deployment/20220728062218_cleanup_attachments.rake @@ -0,0 +1,21 @@ +namespace :after_party do + desc 'Deployment task: cleanup_attachments' + task cleanup_attachments: :environment do + puts "Running deploy task 'cleanup_attachments'" + + invalid_attachments = ActiveStorage::Attachment.where.missing(:blob) + invalid_attachments_count = invalid_attachments.size + + if invalid_attachments.any? + invalid_attachments.destroy_all + puts "#{invalid_attachments_count} with blob that doesn't exist have been destroyed" + else + puts "No attachments with blob that doesn't exist found" + end + + # Update task as completed. If you remove the line below, the task will + # run with every deploy (or every time you call after_party:run). + AfterParty::TaskRecord + .create version: AfterParty::TaskRecorder.new(__FILE__).timestamp + end +end