Я заметил, что для кастомизации дизайна рекомендуется использовать темы вместо плагинов. В чём преимущества?
С точки зрения разработки темы кажутся мне слишком громоздкими. Мне нужен ещё один инструмент, чтобы видеть изменения кода в реальном времени — консоль CLI для тем.
Я также понимаю, что темы могут быть выбираемы пользователем (мне эта функция не нужна).
Каковы преимущества тем перед плагинами в продакшене?
Таким образом, если вам не нужно создавать маршруты, изменять сериализаторы или хранить пользовательские данные, скорее всего, вы сможете достичь своей цели, используя только тему.
Самая большая проблема, с которой мы сталкиваемся при поддержке пользовательских плагинов, — это сбои работы сайта. Обычно это происходит потому, что плагин внедряет изменения в класс или метод Rails в ядре, которые были изменены, но плагин ещё не обновлён с учётом этих изменений. Если что-то изменится на стороне Ember и тем самым нарушит работу темы или компонента темы, сайт может отобразиться некорректно, но его можно быстро отключить с помощью /safe-mode.
Я понимаю вашу точку зрения. Также стоит отметить, что этот gem позволяет разрабатывать тему локально и синхронизировать её с любым сайтом Discourse, к которому у вас есть API-ключ, включая theme-creator.discourse.org. Вам даже не нужно настраивать локальное окружение разработки, если у вас запущен этот gem.
Вау, ответы здесь просто золотые, мне почти нечего добавить.
Единственное, что, на мой взгляд, важно отметить: внутри команды Discourse мы делаем шаги к разделению некоторых плагинов на «плагин для бэкенда» и «тему для фронтенда». Мы обдумываем эту проблему «распространения», когда такие вещи смешаны.
В целом, моя крайне сильная рекомендация: создавайте плагины только в том случае, если это абсолютно необходимо. Когда вам нужно изменить Ruby-бэкенд, у вас нет выбора. Плагин, который вносит изменения только во фронтенд, настоятельно не рекомендуется. Его сложнее поддерживать в актуальном состоянии, и он гораздо менее гибок с точки зрения использования.