Изменения кода в live-тесте приложения не отображаются во фронтенде

Здравствуйте,

Приходя из разработки на Joomla/WordPress, я заинтересован в том, как работает модификация файлов бэкенда Discourse через Docker.

Я прочитал документацию о том, как создать плагин (How can I make my own Discourse plugins? - #2 by merefield), но пока не хочу этим заниматься. Мне просто нужно иметь возможность тестировать код в реальном времени.

В обычной установке MVC без Docker изменение файла через FTP сразу же отражалось в работе. А в Docker я понимаю необходимость пересборки приложения для применения постоянных изменений, но что делать, если нужно тестировать изменения «на лету»?

Кажется, что тестирование изменений кода в реальном времени не работает:

Например, я хочу отключить поиск для анонимных пользователей, поэтому отредактировал:
/var/www/discourse/app/controllers/search_controller.rb, добавив «if current_user.present?» после «def show» и закрыв функцию словом «end» в конце.

Я был удивлен, что это никак не повлияло на фронтенд, и даже переименование контроллера в search_controllerold не имело никакого эффекта на поиск.

Но странно, что переименование изображения в /var/www/discourse/public/images# скрывает его на фронтенде :)!

Может ли кто-нибудь объяснить, как здесь всё устроено? Есть ли какая-то другая кэшированная версия системы, помимо приложения, которое запускается из образа?

Спасибо.

Хорошо, я обнаружил, что код изменяется, если я редактирую файлы в ./javascripts/discourse/node_modules/.embroider/rewritten-app/
Теперь всё выглядит лучше :slight_smile:

Это выглядит больше как антипаттерн.

Скорее всего, это будет заменяться при каждой сборке.

Посмотрите материалы в Documentation > Developer Guides и множество реальных примеров с открытым исходным кодом, чтобы узнать, как модифицировать фронтенд через #theme-component, а также фронтенд и бэкенд через #plugin.

Спасибо за публикацию! Я изучу это и, возможно, в будущем займусь этим более серьезно. На данный момент я просто хотел протестировать изменения в реальном времени и не понимаю, почему они не отображаются на фронтенде так же просто, как это было с FTP в Joomla/WordPress, хотя я нахожусь внутри приложения.