Je déplace un site existant du stockage local des téléchargements vers le stockage S3, en suivant ce guide. Tout fonctionne bien pour les nouveaux téléchargements, j’ai confirmé qu’ils apparaissent dans S3 en vérifiant manuellement. Cependant, lorsque j’essaie d’exécuter rake uploads:migrate_to_s3, j’obtiens la sortie suivante :
Veuillez noter que la migration vers S3 n'est actuellement pas réversible !
[CTRL+c] pour annuler, [ENTRÉE] pour continuer
Migration des téléchargements vers S3 pour 'default'...
Certains téléchargements n'ont pas été migrés vers le nouveau schéma. Lancement de la migration, cela peut prendre un certain temps...
rake a échoué !
FileStore::ToS3MigrationError: Certains téléchargements n'ont pas pu être migrés vers le nouveau schéma. Vous devez corriger cela manuellement.
/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
(Voir la trace complète en exécutant la tâche avec --trace)
En examinant le fichier où l’erreur provient, lib/file_store/to_s3_migration.rb, je vois qu’il semble effectuer une vérification sur la table uploads pour les lignes où url NOT LIKE '//%' AND url NOT LIKE '/%#{seeded_image_url}%'. Dans mon cas, je suppose que seeded_image_url se résout en uploads/default/original/_X/.
J’ai exécuté la même vérification sur la base de données manuellement et j’ai trouvé ce qui suit :
Les deux du bas ne m’inquiètent pas, je suppose que ce sont juste des artefacts fortuits du changement - s’ils n’ont pas d’
url, alors le site ne sait probablement pas où les trouver, donc ils peuvent être supprimés en toute sécurité. Je suis plus préoccupé par les logos. Ce sont les logos par défaut, que nous utilisons toujours, mais ils sont distribués avec le code source plutôt qu’importés.
Est-il sûr d’ajouter une troisième condition dans to_s3_migration.rb, ligne 146, qui ignore également les téléchargements où la colonne URL commence par /images/ ? Ou devrais-je simplement supprimer ces lignes car ces fichiers sont gérés séparément des téléchargements maintenant, et que ce n’est qu’un artefact d’une ancienne version de Discourse ? Ou ai-je mal compris ce que fait la tâche (pas très familier avec Rails) et le problème est autre chose ?
