Plugins do Discourse e configuração/inicializadores do Rails 6: Pergunta

Acho que te levei a um erro nos posts acima. reloadable_patch é útil para o desenvolvimento do Discourse, mas @david explicou muito bem seu uso:


Qualquer coisa dentro do bloco after_initialize do plugin.rb é carregada apenas durante a inicialização da aplicação, e não nas recargas subsequentes.

Então, supondo que você queira adicionar algo ao serializador de usuário. O comportamento normal seria assim:

Na inicialização:

  • O Discourse carrega user_serializer.rb
  • O Discourse carrega plugin.rb, que tem uma sobrescrita para user_serializer

Na recarga:

  • O Discourse recarrega user_serializer.rb
  • (o patch do plugin.rb não é recarregado, a sobrescrita do plugin é perdida)

Com nosso sistema reloadable_patch:

Na inicialização:

  • O Discourse carrega user_serializer.rb
  • O Discourse carrega plugin.rb e registra o reloadable_patch para o serializador de usuário
  • Os patches recarregáveis são executados

Na recarga:

  • O Discourse recarrega user_serializer.rb
  • Os patches recarregáveis são executados
  • (uau, a sobrescrita do plugin ainda está funcionando)