Pergunta sobre a configuração do SiteSettings em arquivo YAML

No meu arquivo app.yml, tenho muitas (~80) instruções como a abaixo:

  - exec: rails r "SiteSetting.some_setting=false"
  - exec: rails r "SiteSetting.some_other_setting=0"
  - exec: rails r "SiteSetting.a_third_setting=0"

Isso parece pouco inteligente (fazer cada instrução separadamente). Existe uma maneira melhor de realizar isso? Estou acumulando sobrecarga desnecessária no meu processo de reconstrução? Ou essa é a maneira correta de fazer? Obrigado antecipadamente.

Olá @maggiomj

Se você verificar o banco de dados PostgreSQL do Discourse, verá que existe uma tabela para configurações do site e que a maioria delas é persistida (salva) no banco de dados.

Como você não especificou exatamente quais configurações do site tem interesse, é difícil dar uma resposta exata; mas, em geral, uma vez que essas configurações do site são configuradas no banco de dados, há pouca razão para defini-las novamente a cada rebuild no arquivo yml.

Claro, isso não se aplica a configurações do site personalizadas que não são persistidas no banco de dados.

Espero que isso ajude.

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))
Digite "help" para obter ajuda.

discourse=# \dt *site*
             List of relations
 Schema |     Name      | Type  |   Owner   
--------+---------------+-------+-----------
 public | site_settings | table | discourse
 public | sitemaps      | table | discourse
(2 linhas)

discourse=# select count(id) from site_settings;
 count 
-------
   141
(1 linha)

discourse=# 

Se você comparar as diretivas de configuração do site no seu arquivo yml com o banco de dados, poderá ter uma boa ideia de quais dessas diretivas no yml são redundantes.

Basicamente, você pode se livrar dessas linhas.

Isso só faz sentido se o seu objetivo for criar vários sites diferentes que tenham essas configurações e se essas configurações forem apagadas na próxima reconstrução caso alguém as altere na interface do usuário.

Que problema você está tentando resolver ao definir essas configurações no seu arquivo yml?