Ce qui se passe ici, c’est ceci :
-
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.
-
J’ai transféré le plugin QnA à
paviliondevil 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. -
Des années plus tard, Pavilion a transféré le plugin Question-Réponse à Discourse. Discourse a initialement conservé le nom
discourse-question-answer. -
Il y a quelques mois, j’ai créé ma propre fork du plugin hébergée dans
discourse, alors qu’elle s’appelait encorediscourse-question-answer. -
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-answerconsidérablement mis à jour, hébergé dansdiscourse. 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. -
Discourse a renommé
discourse-question-answerendiscourse-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. -
Une migration dans
discourse/discourse-upvotes(anciennementdiscourse-question-answer) suppose que la colonnevaluedanspost_custom_fieldsest de type JSON. -
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 concernHasCustomFieldsdansdiscourse/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 :
- Lorsque les personnes ayant l’URL (obsolète depuis des années)
angusmcleod/discourse-question-answerdans 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 :
-
@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

-
La migration du plugin
discourse/discourse-upvotespourrait être mise à jour pour gérer les valeurs non-JSON dans la colonnevaluedepost_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.