ここで何が起こっているかというと、次のとおりです。
-
一部のユーザーは、
app.ymlファイルに、リポジトリ URL に私の個人 GitHub ユーザー名が含まれた、非常に古いバージョンの質問回答プラグインをアプリに入れています。 -
私は数年前に QnA プラグインを
paviliondevに譲渡しました。GitHub はリポジトリ URL を譲渡時にリダイレクトするため、私の個人ユーザー名が含まれた古い URL は機能し続けました。 -
さらに数年後、Pavilion は Question Answer Plugin を Discourse に譲渡しました。Discourse は当初
discourse-question-answerという名前を維持していました。 -
数か月前、私は Discourse にホストされているプラグインの、まだ
discourse-question-answerと呼ばれていた頃のフォークを作成しました。 -
私の個人 GitHub アカウントが含まれた QnA プラグインへの非常に古いリンクを持っていた人々は、現在、Discourse にホストされている、大幅に更新された
discourse-question-answerの私の新しいフォークをクローンしていました。つまり、非常に古いリンクが、新しいプラグインのフォークを指すようになっていたのです。長年経過していましたが、これは予見すべきでした。申し訳ありません。そのフォークは削除しました。 -
Discourse は
discourse-question-answerの名前をdiscourse-upvotesに変更しました。この名前の変更は、@Jaap-Jan_Swijnenburg さんのケースには実質的な影響はありませんでしたが、あなたが予期せずそのリポジトリのフォークをクローンしている理由です。 -
discourse/discourse-upvotes(旧discourse-question-answer) の移行では、post_custom_fieldsのvalue列が JSON として型セーフであることを想定しています。 -
プラグインが
angusmcleod/discourse-question-answerだった頃(数年前)にプラグインによって作成された古いデータは、discourse/discourseのHasCustomFieldsコンサーンによって有効な JSON として保存されていませんでした。推測ですが、このデータは、4年前に JSON 型チェックが追加される前 に追加された可能性が高いです。(エッジケースでは、JSON として登録されたカスタムフィールドに無効な JSON が含まれる可能性があります。)
したがって、
- (数年前から更新されていない)
angusmcleod/discourse-question-answerの URL をapp.ymlに持つ人々が Discourse を更新すると、新しいバージョンのプラグインの移行がクローンされ、移行が実行され、潜在的にこのエラーが発生します。
これにはいくつかの解決策があります。
-
@Jaap-Jan_Swijnenburg さん、あなたのケースでは、私の古い QnA プラグインへの参照を削除するだけで、サイトを再構築できるようになります。それだけです。すでに実行されたようです

-
discourse/discourse-upvotesプラグインの移行を更新して、post_custom_fieldsのvalue列の非 JSON 値を処理できるようにすることができます。
2 は、古いバージョンの QnA プラグインから discourse-upvotes に切り替えたい人々の場合にも対応できることに注意してください。その場合、移行が実行され、post_custom_fields の value 列のエントリが無効な JSON でない限り失敗します。