В моем файле app.yml у меня много (~80) операторов, подобных нижеследующему:
- exec: rails r "SiteSetting.some_setting=false"
- exec: rails r "SiteSetting.some_other_setting=0"
- exec: rails r "SiteSetting.a_third_setting=0"
Это кажется глупым (делать каждый оператор отдельно). Есть ли лучший способ это сделать? Не накапливаю ли я излишние накладные расходы в процессе перестройки? Или это правильный способ? Заранее спасибо.
Если вы проверите базу данных PostgreSQL для Discourse, то увидите, что существует таблица для настроек сайта и что большинство настроек сайта сохраняются в базе данных.
Так как вы не указали конкретные настройки сайта, которые вас интересуют, трудно дать точный ответ; но в целом, после того как эти настройки сайта установлены в базе данных, мало причин настраивать их при каждой пересборке в файле yml.
Конечно, это не относится к любым пользовательским настройкам сайта, которые не сохраняются в базе данных.
Надеюсь, это поможет.
a_server:~# docker exec -it data bash
a_server-data:/# su postgres
postgres@a_server-data:/$ psql discourse
psql (12.2 (Debian 12.2-2.pgdg100+1))
Введите "help" для справки.
discourse=# \dt *site*
Список отношений
Схема | Имя | Тип | Владелец
--------+---------------+-------+-----------
public | site_settings | таблица | discourse
public | sitemaps | таблица | discourse
(2 строки)
discourse=# select count(id) from site_settings;
count
-------
141
(1 строка)
discourse=#
Если вы сравните директивы настроек вашего сайта в файле yml с базой данных, то сможете довольно точно определить, какие из директив настроек сайта в вашем файле yml избыточны.
Это имеет смысл только в том случае, если ваша цель — создавать множество разных сайтов с этими настройками, при этом настройки будут сбрасываться при следующей сборке, если кто-то изменит их в UX.
Какую проблему вы пытаетесь решить, задавая эти настройки в вашем yml-файле?