Plugins de Discourse y pregunta de configuración de Rails 6 config/initializers

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 para user_serializer

Al recargar:

  • Discourse vuelve a cargar user_serializer.rb
  • (el parche de plugin.rb no 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.rb y registra el reloadable_patch para 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!)