Plugin causant des erreurs lors de la reconstruction

Ce qui se passe ici, c’est ceci :

  1. Certaines personnes ont une très vieille version du plugin question-réponse avec mon nom d’utilisateur GitHub personnel dans l’URL du dépôt dans leur fichier app.yml.

  2. J’ai transféré le plugin QnA à paviliondev il y a des années. Github redirige les URL de dépôts lorsqu’ils sont transférés, donc les anciennes URL avec mon nom d’utilisateur personnel ont continué à fonctionner.

  3. Des années plus tard, Pavilion a transféré le plugin Question-Réponse à Discourse. Discourse a initialement conservé le nom discourse-question-answer.

  4. Il y a quelques mois, j’ai créé ma propre fork du plugin hébergée dans discourse, alors qu’elle s’appelait encore discourse-question-answer.

  5. Les personnes ayant de très vieux liens vers le plugin QnA avec mon compte GitHub personnel en eux clonaient désormais ma nouvelle fork du discourse-question-answer considérablement mis à jour, hébergé dans discourse. En d’autres termes, un lien très ancien pointait désormais vers une fork d’un nouveau plugin. Malgré les années écoulées, j’aurais dû prévoir cela, donc je m’en excuse. J’ai supprimé cette fork.

  6. Discourse a renommé discourse-question-answer en discourse-upvotes. Ce changement de nom n’a pas eu d’impact matériel sur votre cas @Jaap-Jan_Swijnenburg, mais c’est la raison pour laquelle vous clonez maintenant (de manière inattendue) une fork de ce dépôt.

  7. Une migration dans discourse/discourse-upvotes (anciennement discourse-question-answer) suppose que la colonne value dans post_custom_fields est de type JSON.

  8. Les anciennes données créées par le plugin lorsqu’il était angusmcleod/discourse-question-answer (il y a des années) n’ont pas été enregistrées en tant que JSON valide par le concern HasCustomFields dans discourse/discourse. Je suppose, mais ces données ont probablement été ajoutées avant que la vérification de type JSON ne soit ajoutée il y a 4 ans (Il est toujours possible de se retrouver avec du JSON invalide dans les champs personnalisés enregistrés comme JSON dans des cas limites).

Par conséquent :

  1. Lorsque les personnes ayant l’URL (obsolète depuis des années) angusmcleod/discourse-question-answer dans leur app.yml mettent à jour leur Discourse, la migration dans la nouvelle version du plugin est clonée, la migration s’exécute et crée potentiellement cette erreur.

Il existe quelques solutions à cela :

  1. @Jaap-Jan_Swijnenburg dans votre cas, il vous suffit de supprimer la référence à mon ancien plugin QnA et vous pourrez reconstruire votre site. C’est tout ; rien de plus. Il semble que c’est ce que vous avez fait :+1:

  2. La migration du plugin discourse/discourse-upvotes pourrait être mise à jour pour gérer les valeurs non-JSON dans la colonne value de post_custom_fields.

Je noterais que la solution 2 gérerait également le cas supplémentaire des personnes qui souhaitent effectivement passer d’une ancienne version du plugin QnA à discourse-upvotes. Dans ce cas, la migration s’exécutera et échouera si des entrées dans la colonne value de post_custom_fields ne sont pas du JSON valide.

5 « J'aime »