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üruser_serializerenthält
Beim Neuladen:
- Discourse lädt
user_serializer.rbneu - (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.rbund registriert denreloadable_patchfür den User-Serializer - Die reloadable Patches werden ausgeführt
Beim Neuladen:
- Discourse lädt
user_serializer.rbneu - Die reloadable Patches werden ausgeführt
- (Hurra, die Plugin-Überschreibung funktioniert weiterhin)