Estou movendo um site existente de armazenar uploads localmente para armazená-los no S3, seguindo este guia. Tudo está funcionando bem para novos uploads, confirmei que eles estão aparecendo no S3 verificando manualmente. No entanto, quando tento executar rake uploads:migrate_to_s3, recebo a seguinte saída:
Por favor, note que a migração para S3 atualmente não pode ser revertida!
[CTRL+c] para cancelar, [ENTER] para continuar
Migrando uploads para S3 para 'default'...
Alguns uploads não foram migrados para o novo esquema. Executando a migração, isso pode levar algum tempo...
rake abortou!
FileStore::ToS3MigrationError: Alguns uploads não puderam ser migrados para o novo esquema. Você precisa corrigir isso manualmente.
/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>'
Tarefas: TOP => uploads:migrate_to_s3
(Veja o rastreamento completo executando a tarefa com --trace)
Olhando no arquivo onde o erro se origina, lib/file_store/to_s3_migration.rb, vejo que ele parece estar executando uma verificação na tabela uploads para linhas onde url NOT LIKE '//%' AND url NOT LIKE '/%#{seeded_image_url}%'. No meu caso, assumo que seeded_image_url se resolve para uploads/default/original/_X/.
Executei a mesma verificação no banco de dados manualmente e encontrei o seguinte:
Não me preocupo com os dois de baixo, imagino que sejam apenas artefatos acidentais da troca - se eles não tiverem
url, presumivelmente o site não sabe onde encontrá-los, então eles podem ser removidos com segurança. Estou mais preocupado com os logos, no entanto. Estes são os logos padrão, que na verdade ainda estamos usando, mas eles são distribuídos com o código-fonte em vez de serem carregados.
É seguro adicionar uma terceira condição em to_s3_migration.rb, linha 146, que também ignora uploads onde a coluna URL começa com /images/? Ou devo apenas excluir essas linhas porque esses arquivos são tratados separadamente dos uploads agora, e isso é apenas um artefato de uma versão mais antiga do Discourse? Ou eu entendi mal o que a tarefa está fazendo (não sou muito familiarizado com Rails) e o problema é outra coisa?
