リビルド中にエラーを引き起こすプラグイン

ここで何が起こっているかというと、次のとおりです。

  1. 一部のユーザーは、app.yml ファイルに、リポジトリ URL に私の個人 GitHub ユーザー名が含まれた、非常に古いバージョンの質問回答プラグインをアプリに入れています。

  2. 私は数年前に QnA プラグインを paviliondev に譲渡しました。GitHub はリポジトリ URL を譲渡時にリダイレクトするため、私の個人ユーザー名が含まれた古い URL は機能し続けました。

  3. さらに数年後、Pavilion は Question Answer Plugin を Discourse に譲渡しました。Discourse は当初 discourse-question-answer という名前を維持していました。

  4. 数か月前、私は Discourse にホストされているプラグインの、まだ discourse-question-answer と呼ばれていた頃のフォークを作成しました。

  5. 私の個人 GitHub アカウントが含まれた QnA プラグインへの非常に古いリンクを持っていた人々は、現在、Discourse にホストされている、大幅に更新された discourse-question-answer の私の新しいフォークをクローンしていました。つまり、非常に古いリンクが、新しいプラグインのフォークを指すようになっていたのです。長年経過していましたが、これは予見すべきでした。申し訳ありません。そのフォークは削除しました。

  6. Discourse は discourse-question-answer の名前を discourse-upvotes に変更しました。この名前の変更は、@Jaap-Jan_Swijnenburg さんのケースには実質的な影響はありませんでしたが、あなたが予期せずそのリポジトリのフォークをクローンしている理由です。

  7. discourse/discourse-upvotes (旧 discourse-question-answer) の移行では、post_custom_fieldsvalue 列が JSON として型セーフであることを想定しています。

  8. プラグインが angusmcleod/discourse-question-answer だった頃(数年前)にプラグインによって作成された古いデータは、discourse/discourseHasCustomFields コンサーンによって有効な JSON として保存されていませんでした。推測ですが、このデータは、4年前に JSON 型チェックが追加される前 に追加された可能性が高いです。(エッジケースでは、JSON として登録されたカスタムフィールドに無効な JSON が含まれる可能性があります。)

したがって、

  1. (数年前から更新されていない)angusmcleod/discourse-question-answer の URL を app.yml に持つ人々が Discourse を更新すると、新しいバージョンのプラグインの移行がクローンされ、移行が実行され、潜在的にこのエラーが発生します。

これにはいくつかの解決策があります。

  1. @Jaap-Jan_Swijnenburg さん、あなたのケースでは、私の古い QnA プラグインへの参照を削除するだけで、サイトを再構築できるようになります。それだけです。すでに実行されたようです :+1:

  2. discourse/discourse-upvotes プラグインの移行を更新して、post_custom_fieldsvalue 列の非 JSON 値を処理できるようにすることができます。

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

「いいね!」 5