AlbaへのActiveModelSerializersからの移行に関する提案

こんにちは。Discourse が ActiveModelSerializer の古いバージョンを使用していることに気づきました。
5年前にリリースされたもので、良いとは思えません。

AMS をフォークする計画があるようですが、より良い解決策があります。
私の提案は、AMS から私が作成・保守している JSON シリアライザーである Alba に移行することです。Alba は AMS と 100% 互換性があるわけではありませんが、提供する API は AMS に似ており、最新の AMS よりも約 10 倍高速です。

メンテナーが移行に同意すれば、PR を送信します。

「いいね!」 4

PRで2つか3つのエンドポイントをそれに変更し、ベンチマークを実行していただけませんか?評価の助けになるかもしれません :smiley:

「いいね!」 4

はい、Falco が言及したように、ここでは 2 つの領域について心配する必要があります。

  1. プラグインの互換性 - 多くのプラグインはシリアライザーを拡張しており、破壊的な変更を最小限に抑えたいと考えています。
  2. パフォーマンス - シリアライザーの変更は、確かなデータによって裏付けられる必要があります。

トピックまたはトピック リストのページに関係するシリアライザーの一部を確認し、それらをテスト グラウンドとして使用することを推奨します。

次に、discoruse bench の「変更前」と「変更後」の数値を参照してください。これにより、達成された進捗状況を非常に正確に把握できます。

受け入れ可能なエコシステムの中断の量は、ここでのパフォーマンスの向上に大きく依存します。

「いいね!」 6

返信が遅くなり申し訳ありません。

パフォーマンスが改善されると思われるので、ベンチマークスクリプトを実行します。

シリアライザープラグインについては知りませんでした。シリアライザーをカスタマイズするプラグインの例を見つけました。

ここで、include_votes? メソッドは、コードベースのどこでも使用されていないため、AMS のマジックメソッドのように見えます。Alba はこの動作をサポートしていないため、このようなケースではマイグレーションが必要になると思います。

互換性を維持することは重要なので、Alba を既存のプラグインと互換性のあるものにできない場合は、先に進むのは避けたいと思います。

「いいね!」 2

お探しの魔法は add_to_serializer です。新しいシリアライザーを作成する必要はありません。

こちらがお役に立つかもしれません: Add to serializer only for staff and current user - #7 by paresy

ああ、ありがとう。プラグインが有効かどうか、およびプラグインの本体を返すヘルパーメソッドを定義しているようです。Albaと互換性を持たせることができると思います。試してみます。

申し訳ありません。元のプラグインをよく見ていませんでした。私のヒントは思ったほど役に立たないかもしれません。

既存のシリアライザーに何かを追加している場合(投稿シリアライザーにフィールドを追加するなど)は、お手伝いしました。独自の情報を返す新しいルートを追加する必要がある場合は、別のことを行う必要があります。