In meiner app.yml-Datei habe ich viele (~80) Anweisungen wie die folgende:
- exec: rails r "SiteSetting.some_setting=false"
- exec: rails r "SiteSetting.some_other_setting=0"
- exec: rails r "SiteSetting.a_third_setting=0"
Das wirkt etwas dumm (jede Anweisung separat zu machen). Gibt es einen besseren Weg, dies zu erreichen? Baue ich unnötigen Overhead in meinem Rebuild-Prozess auf? Oder ist dies der richtige Weg? Vielen Dank im Voraus.
Wenn du die Discourse-PostgreSQL-Datenbank überprüfst, wirst du sehen, dass es eine Tabelle für die Seiteneinstellungen gibt und dass die meisten dieser Einstellungen in der Datenbank persistiert (gespeichert) werden.
Da du nicht genau angegeben hast, welche Seiteneinstellungen dich interessieren, ist es schwierig, eine präzise Antwort zu geben. Im Allgemeinen gibt es jedoch, sobald diese Einstellungen in der Datenbank konfiguriert sind, wenig Grund, sie bei jedem Neuaufbau in der YAML-Datei erneut festzulegen.
Natürlich gilt dies nicht für benutzerdefinierte Seiteneinstellungen, die nicht in der Datenbank persistiert werden.
Hoffentlich hilft dir das weiter.
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))
Type "help" for help.
discourse=# \dt *site*
List of relations
Schema | Name | Type | Owner
--------+---------------+-------+-----------
public | site_settings | table | discourse
public | sitemaps | table | discourse
(2 rows)
discourse=# select count(id) from site_settings;
count
-------
141
(1 row)
discourse=#
Wenn du deine Direktiven für die Seiteneinstellungen in der YAML-Datei mit der Datenbank vergleichst, kannst du dir ein recht gutes Bild davon machen, welche deiner YAML-Direktiven für die Seiteneinstellungen überflüssig sind.
Das ergibt nur dann Sinn, wenn Ihr Ziel darin besteht, eine Reihe verschiedener Sites mit diesen Einstellungen zu erstellen und diese Einstellungen beim nächsten Neuaufbau verworfen werden, falls jemand sie in der UX ändert.
Welches Problem versuchen Sie zu lösen, indem Sie diese in Ihrer YML-Datei festlegen?