Dans mon fichier app.yml, j’ai de nombreuses (~80) déclarations comme celle-ci :
- exec: rails r "SiteSetting.some_setting=false"
- exec: rails r "SiteSetting.some_other_setting=0"
- exec: rails r "SiteSetting.a_third_setting=0"
Cela semble stupide (de faire chaque déclaration séparément). Y a-t-il une meilleure façon de procéder ? Est-ce que j’accumule des surcharges inutiles dans mon processus de reconstruction ? Ou est-ce la bonne façon de faire ? Merci d’avance.
Si vous consultez la base de données PostgreSQL de Discourse, vous verrez qu’il existe une table pour les paramètres du site et que la plupart de ces paramètres sont persistés (sauvegardés) dans la base de données.
Comme vous n’avez pas précisé les paramètres du site qui vous intéressent exactement, il est difficile de vous répondre de manière précise ; mais en général, une fois que ces paramètres sont configurés dans la base de données, il y a peu de raisons de les définir à chaque reconstruction dans le fichier YAML.
Bien entendu, cela ne s’applique pas aux paramètres du site personnalisés qui ne sont pas persistés dans la base de données.
J’espère que cela vous aide.
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))
Tapez "help" pour obtenir de l'aide.
discourse=# \dt *site*
Liste des relations
Schéma | Nom | Type | Propriétaire
--------+---------------+-------+------------------
public | site_settings | table | discourse
public | sitemaps | table | discourse
(2 lignes)
discourse=# select count(id) from site_settings;
count
-------
141
(1 ligne)
discourse=#
Si vous comparez vos directives de paramètres du site dans votre fichier YAML avec la base de données, vous pourrez avoir une idée assez précise de quelles directives de paramètres du site dans votre fichier YAML sont redondantes.
Cela n’a de sens que si votre objectif est de pouvoir créer plusieurs sites différents avec ces paramètres, et que ces paramètres soient effacés lors de la prochaine reconstruction si quelqu’un les modifie dans l’interface utilisateur.
Quel problème essayez-vous de résoudre en définissant ces paramètres dans votre fichier yml ?