Migrate_to_S3 échoue lors de la rebake

Édition : Il semble que votre erreur soit différente de la mienne ; il semblerait que certaines de vos images n’aient pas été transférées vers S3. Désolé, je me suis trompé de lecture. Peut-être que certaines informations ci-dessous sont toujours utiles. Avez-vous configuré vos uploads S3 en suivant ce guide ? Configure an S3 compatible object storage provider for uploads

@evenif - Désolé d’apprendre que vous rencontrez des problèmes avec cela. Je comptais rédiger un guide à ce sujet pour les personnes confrontées aux mêmes difficultés, car il a fallu assembler pas mal d’informations provenant de différents fils de discussion. Mais j’attends d’espérer que les avatars soient corrigés, car comme vous pouvez le voir ci-dessus, je rencontre toujours des problèmes à ce sujet.

Si vous exécutez ceci dans Rails, obtenez-vous true ou false ?

SiteSetting.migrate_to_new_scheme

Si c’est false, vous pouvez essayer de le définir sur true ainsi :

SiteSetting.migrate_to_new_scheme = true

Ensuite, soit attendez un moment et revenez plus tard (je crois que cela s’exécute toutes les 15 minutes, si ma mémoire est bonne), mais si vous voulez l’exécuter immédiatement :

Jobs::MigrateUploadScheme.new.execute(nil)

Ensuite, vérifiez à nouveau plus tard si SiteSetting.migrate_to_new_scheme est maintenant false (cela signifie que cela devrait être terminé).

Ensuite, exécutez :
Upload.by_users.where("url NOT LIKE '//%' AND url NOT LIKE '/uploads/default/original/_X/%'").to_a

Cela devrait trouver les uploads qui posent toujours problème et qui n’ont pas pu être migrés. Dans mon cas, tous ces uploads existaient en tant qu’enregistrements dans la base de données, mais les images elles-mêmes n’existaient pas.

Selon la taille de la liste, vous pouvez copier la page, puis utiliser la fonction Rechercher et Remplacer pour créer une liste de commandes afin de supprimer ces enregistrements problématiques à l’aide des IDs d’upload.

Upload.find(1).destroy
Upload.find(2).destroy
Upload.find(3).destroy

En remplaçant 1, 2, 3, etc., par les IDs d’upload. Copiez et collez la liste entière dans Rails et appuyez sur Entrée. Cela devrait supprimer ces enregistrements problématiques.

Ensuite, quittez Rails (tapez exit) et tout ce que vous aurez à faire sera d’exécuter :

rake posts:rebake
ou
rake posts:rebake_uncooked_posts

L’option uncooked vous permet de reprendre le rebake en cas d’échec. Je recommande d’utiliser le rebake normal sauf si vous avez des milliers d’uploads.

Ensuite, tout devrait fonctionner correctement, espérons-le. Mais il y a de fortes chances que vos avatars optimisés soient cassés comme les miens, mais les versions originales devraient exister sur S3.

Vous pouvez vérifier si les avatars ont été transférés avec succès (du moins pour certains utilisateurs) en exécutant ceci dans Rails pour un utilisateur qui affiche un avatar par défaut :
User.find_by_username('username').uploaded_avatar

Vous pouvez également vérifier si les versions optimisées existent en utilisant ceci :
OptimizedImage.where(upload_id: upload_id).where(version: 2)