Plugin verursacht Fehler während des Rebuilds

Was hier passiert, ist Folgendes:

  1. Manche Leute haben eine sehr alte Version des Frage-Antwort-Plugins mit meinem persönlichen GitHub-Benutzernamen in der Repository-URL in ihrer app.yml-Datei.

  2. Ich habe das QnA-Plugin vor Jahren an paviliondev übertragen. GitHub leitet Repository-URLs um, wenn sie übertragen werden, sodass die alten URLs mit meinem persönlichen Benutzernamen weiterhin funktionierten.

  3. Jahre später hat Pavilion das Frage-Antwort-Plugin an Discourse übertragen. Discourse behielt zunächst den Namen discourse-question-answer bei.

  4. Vor ein paar Monaten habe ich meinen eigenen Fork des Plugins erstellt, das in discourse gehostet wird, während es noch discourse-question-answer hieß.

  5. Leute mit sehr alten Links zum QnA-Plugin, die meinen persönlichen GitHub-Account enthielten, klonten nun meinen neuen Fork des erheblich aktualisierten discourse-question-answer, das in discourse gehostet wird. Mit anderen Worten, ein sehr alter Link zeigte nun auf einen Fork eines neuen Plugins. Trotz der vergangenen Jahre hätte ich das vorhersehen sollen, daher bitte ich um Entschuldigung. Ich habe diesen Fork entfernt.

  6. Discourse hat den Namen von discourse-question-answer in discourse-upvotes geändert. Diese Namensänderung hatte keine wesentlichen Auswirkungen auf Ihren Fall @Jaap-Jan_Swijnenburg, aber sie ist der Grund, warum Sie jetzt (unerwartet) einen Fork dieses Repos klonen.

  7. Eine Migration in discourse/discourse-upvotes (ehemals discourse-question-answer) geht davon aus, dass die Spalte value in post_custom_fields JSON-typsicher ist.

  8. Alte Daten, die vom Plugin erstellt wurden, als es angusmcleod/discourse-question-answer war (vor Jahren), wurden vom HasCustomFields-Concern in discourse/discourse nicht als gültiges JSON gespeichert. Ich vermute, dass diese Daten wahrscheinlich bevor die JSON-Typüberprüfung vor 4 Jahren hinzugefügt wurde hinzugefügt wurden (Es ist in Ausnahmefällen immer noch möglich, ungültiges JSON in benutzerdefinierten Feldern zu haben, die als JSON registriert sind).

Daher:

  1. Wenn Leute mit der (jahrealten) angusmcleod/discourse-question-answer-URL in ihrer app.yml ihr Discourse aktualisieren, wird die Migration in der neuen Version des Plugins geklont, die Migration läuft und erstellt möglicherweise diesen Fehler.

Es gibt ein paar Lösungen dafür:

  1. @Jaap-Jan_Swijnenburg In Ihrem Fall müssen Sie nur den Verweis auf mein altes QnA-Plugin entfernen, und Sie können Ihre Website neu erstellen. Das ist alles; nichts weiter. Sieht so aus, als hätten Sie das bereits getan :+1:

  2. Die Migration des Plugins discourse/discourse-upvotes könnte aktualisiert werden, um Nicht-JSON-Werte in der Spalte value in post_custom_fields zu verarbeiten.

Ich möchte darauf hinweisen, dass 2 auch den zusätzlichen Fall von Personen abdecken würde, die tatsächlich von einer alten Version des QnA-Plugins zu discourse-upvotes wechseln möchten. In diesem Fall wird die Migration ausgeführt und schlägt fehl, wenn Einträge in der Spalte value von post_custom_fields kein gültiges JSON sind.

5 „Gefällt mir“