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.
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.
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?