Перенос на S3 не удаётся из-за логотипов

Я перемещаю существующий сайт с локального хранения загрузок на S3, следуя этому руководству. Всё работает корректно для новых загрузок: я вручную проверил, что они отображаются в S3. Однако при попытке запустить rake uploads:migrate_to_s3 я получаю следующий вывод:

Обратите внимание, что миграция на S3 в настоящее время необратима!
Нажмите [CTRL+c] для отмены или [ENTER] для продолжения.

Миграция загрузок на S3 для 'default'...
Некоторые загрузки не были перенесены по новой схеме. Запускаю миграцию, это может занять некоторое время...
rake aborted!
FileStore::ToS3MigrationError: Некоторые загрузки не удалось перенести по новой схеме. Вам необходимо исправить это вручную.
/var/www/discourse/lib/file_store/to_s3_migration.rb:162:in `migrate_to_s3'
/var/www/discourse/lib/file_store/to_s3_migration.rb:65:in `migrate'
/var/www/discourse/lib/tasks/uploads.rake:127:in `migrate_to_s3'
/var/www/discourse/lib/tasks/uploads.rake:106:in `block in migrate_to_s3_all_sites'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:80:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:90:in `each_connection'
/var/www/discourse/lib/tasks/uploads.rake:104:in `migrate_to_s3_all_sites'
/var/www/discourse/lib/tasks/uploads.rake:100:in `block in <main>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => uploads:migrate_to_s3
(Полный трассировочный вывод можно получить, запустив задачу с флагом --trace)

Изучив файл, в котором возникает ошибка (lib/file_store/to_s3_migration.rb), я вижу, что там выполняется проверка таблицы uploads на наличие строк, где url NOT LIKE '//%' AND url NOT LIKE '/%#{seeded_image_url}%'. В моём случае seeded_image_url, как я предполагаю, разрешается в uploads/default/original/_X/.

Я вручную выполнил аналогичную проверку в базе данных и получил следующие результаты:


Две нижние записи меня не беспокоят: скорее всего, это случайные артефакты переключения — если у них нет url, то сайт, вероятно, не знает, где их найти, поэтому их можно безопасно удалить. Однако меня больше беспокоят логотипы. Это стандартные логотипы, которые мы всё ещё используем, но они распространяются вместе с кодовой базой, а не загружаются отдельно.

Безопасно ли добавить третье условие в to_s3_migration.rb (строка 146), которое также будет игнорировать загрузки, URL-адрес которых начинается с /images/? Или мне просто удалить эти строки, поскольку эти файлы теперь обрабатываются отдельно от загрузок, и это лишь артефакт более старой версии Discourse? Или же я неправильно понял, что делает эта задача (я не очень хорошо знаком с Rails), и проблема заключается в чём-то другом?

Вернулся на следующий день и попробовал снова — задача миграции выполнилась без проблем. Похоже, что изображения логотипов никогда не были проблемой, а дело было лишь в двух лишних файлах. Вероятно, они были удалены каким-то периодическим заданием, потому что сейчас их уже нет.

Если оглянуться назад, то задача загрузки проверяет некорректные URL-адреса загрузок следующим образом:

Upload.by_users.where("url NOT LIKE '//%' AND url NOT LIKE '/%#{seeded_image_url}%'").exists?

Скорее всего, именно by_users заставляет её игнорировать изображения логотипов, поскольку у них нет валидного user_id.