Supongo que te he confundido en los mensajes anteriores. reloadable_patch es útil para el desarrollo de Discourse, pero @david explicó muy bien su uso:
Cualquier cosa dentro del bloque after_initialize de plugin.rb solo se carga durante el inicio de la aplicación, y no en las recargas posteriores.
Por lo tanto, supongamos que quieres agregar algo al serializador de usuario. El comportamiento normal sería así:
Al iniciar:
- Discourse carga
user_serializer.rb - Discourse carga
plugin.rb, que tiene una sobrescritura parauser_serializer
Al recargar:
- Discourse vuelve a cargar
user_serializer.rb - (el parche de
plugin.rbno se vuelve a cargar, se pierde la sobrescritura del plugin)
Con nuestro sistema reloadable_patch:
Al iniciar:
- Discourse carga
user_serializer.rb - Discourse carga
plugin.rby registra elreloadable_patchpara el serializador de usuario - Se ejecutan los parches recargables
Al recargar:
- Discourse vuelve a cargar
user_serializer.rb - Se ejecutan los parches recargables
- (¡genial, la sobrescritura del plugin sigue funcionando!)