Plugins Discourse et configuration Rails 6 config/initializers Question

Je suppose que je vous ai induit en erreur dans les messages ci-dessus. reloadable_patch est utile pour le développement de Discourse, mais @david en a très bien expliqué l’utilisation :


Tout ce qui se trouve dans le bloc after_initialize de plugin.rb n’est chargé que au démarrage de l’application, et non lors des rechargements ultérieurs.

Donc, en supposant que vous souhaitiez ajouter quelque chose au sérialiseur de l’utilisateur. Le comportement normal serait le suivant :

Au démarrage :

  • Discourse charge user_serializer.rb
  • Discourse charge plugin.rb, qui contient une surcharge pour user_serializer

Au rechargement :

  • Discourse recharge user_serializer.rb
  • (la correction de plugin.rb n’est pas rechargée, la surcharge du plugin est perdue)

Avec notre système reloadable_patch :

Au démarrage :

  • Discourse charge user_serializer.rb
  • Discourse charge plugin.rb et enregistre le reloadable_patch pour le sérialiseur de l’utilisateur
  • Les correctifs rechargeables sont exécutés

Au rechargement :

  • Discourse recharge user_serializer.rb
  • Les correctifs rechargeables sont exécutés
  • (yay, la surcharge du plugin fonctionne toujours)