Discourse Plugins und Rails 6 config/initializers Frage

Ich vermute, ich habe Sie in den obigen Beiträgen irreführende Informationen gegeben. reloadable_patch ist hilfreich für die Discourse-Entwicklung, aber @david hat die Verwendung sehr gut erklärt:


Alles, was sich im after_initialize-Block von plugin.rb befindet, wird nur während des Starts der Anwendung geladen, nicht jedoch bei nachfolgenden Neuladungen.

Angenommen, Sie möchten dem User-Serializer etwas hinzufügen. Das normale Verhalten wäre dann wie folgt:

Beim Start:

  • Discourse lädt user_serializer.rb
  • Discourse lädt plugin.rb, das eine Überschreibung für user_serializer enthält

Beim Neuladen:

  • Discourse lädt user_serializer.rb neu
  • (Der Patch aus plugin.rb wird nicht neu geladen, die Plugin-Überschreibung geht verloren)

Mit unserem reloadable_patch-System:

Beim Start:

  • Discourse lädt user_serializer.rb
  • Discourse lädt plugin.rb und registriert den reloadable_patch für den User-Serializer
  • Die reloadable Patches werden ausgeführt

Beim Neuladen:

  • Discourse lädt user_serializer.rb neu
  • Die reloadable Patches werden ausgeführt
  • (Hurra, die Plugin-Überschreibung funktioniert weiterhin)