Вопрос о плагинах Discourse и config/initializers в Rails 6

Кажется, я ввёл вас в заблуждение в предыдущих сообщениях. reloadable_patch полезен для разработки в Discourse, но @david очень хорошо объяснил его использование:


Всё, что находится внутри блока after_initialize в файле plugin.rb, загружается только при запуске приложения, а не при последующих перезагрузках.

Итак, предположим, вы хотите добавить что-то в сериализатор пользователя. В обычном случае поведение будет следующим:

При запуске:

  • Discourse загружает user_serializer.rb
  • Discourse загружает plugin.rb, который содержит переопределение для user_serializer

При перезагрузке:

  • Discourse перезагружает user_serializer.rb
  • (патч из plugin.rb не перезагружается, переопределение плагина теряется)

С нашей системой reloadable_patch:

При запуске:

  • Discourse загружает user_serializer.rb
  • Discourse загружает plugin.rb и регистрирует reloadable_patch для user_serializer
  • Выполняются reloadable патчи

При перезагрузке:

  • Discourse перезагружает user_serializer.rb
  • Выполняются reloadable патчи
  • (ура, переопределение плагина продолжает работать)