YAMLファイルでのSiteSettingsの設定に関する質問

私の 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"

それぞれを個別に記述するのは愚かに思えます。これを達成するより良い方法はありませんか?再構築プロセスに不要なオーバーヘッドが蓄積しているのでしょうか?それとも、これが正しい方法なのでしょうか?ご教示ください。

こんにちは @maggiomj

Discourse の PostgreSQL データベースを確認すると、サイト設定用のテーブルがあり、ほとんどのサイト設定がデータベースに永続化(保存)されていることがわかります。

どのサイト設定について詳しく知りたいのか具体的に指定されていないため、正確な回答は難しいのですが、一般的に、これらのサイト設定がデータベースに設定されてしまえば、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))
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=# 

yml ファイル内のサイト設定ディレクティブとデータベースを比較すれば、どの yml サイト設定ディレクティブが冗長であるか、かなり明確に把握できるはずです。

基本的に、その行を削除できます。

UX で設定を変更した場合に、次のビルドでそれらの設定が消去されるようにしたい場合、つまり、そのような設定を持つ複数のサイトを作成可能にしたい場合にのみ、そのアプローチは理にかなっています。

yml ファイルでそれらの設定を行うことで、どのような問題を解決しようとしているのでしょうか?