Immagino di averti tratto in inganno nei post precedenti. reloadable_patch è utile per lo sviluppo di Discourse, ma @david ne ha spiegato molto bene l’utilizzo:
Qualsiasi cosa all’interno del blocco after_initialize di plugin.rb viene caricata solo durante l’avvio dell’applicazione e non nei successivi ricaricamenti.
Quindi, supponendo che tu voglia aggiungere qualcosa al serializzatore dell’utente. Il comportamento normale sarebbe:
All’avvio:
- Discourse carica
user_serializer.rb - Discourse carica
plugin.rb, che contiene un override peruser_serializer
Al ricaricamento:
- Discourse ricarica
user_serializer.rb - (la patch di plugin.rb non viene ricaricata, l’override del plugin viene perso)
Con il nostro sistema reloadable_patch:
All’avvio:
- Discourse carica
user_serializer.rb - Discourse carica
plugin.rbe registra ilreloadable_patchper il serializzatore dell’utente - Vengono eseguite le patch ricaricabili
Al ricaricamento:
- Discourse ricarica
user_serializer.rb - Vengono eseguite le patch ricaricabili
- (evviva, l’override del plugin continua a funzionare)