DiscourseプラグインとRails 6のconfig/initializersに関する質問

上記の投稿で誤解を招いてしまったかもしれません。reloadable_patch は Discourse の開発には役立ちますが、@david がその使い方を非常に良く説明してくれています:


plugin.rbafter_initialize ブロック内のコードは、アプリケーションの起動時 にのみ読み込まれ、その後のリロード時には読み込まれません。

つまり、ユーザーシリアライザーに何かを追加したいと仮定します。通常の動作は以下のようになります:

起動時:

  • Discourse が user_serializer.rb を読み込む
  • Discourse が plugin.rb を読み込む(これには user_serializer のオーバーライドが含まれている)

リロード時:

  • Discourse が user_serializer.rb を再読み込みする
  • plugin.rb のパッチは再読み込みされず、プラグインによるオーバーライドは失われる)

reloadable_patch システムを使用すると:

起動時:

  • Discourse が user_serializer.rb を読み込む
  • Discourse が plugin.rb を読み込み、user_serializer 用の reloadable_patch を登録する
  • リロード可能なパッチが実行される

リロード時:

  • Discourse が user_serializer.rb を再読み込みする
  • リロード可能なパッチが実行される
  • (やった、プラグインによるオーバーライドが引き続き機能している)