Domanda sull'impostazione di SiteSettings in un file YAML

Nel mio file app.yml ho molte (~80) istruzioni come quella qui sotto:

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

Sembra una soluzione poco intelligente (creare ogni istruzione separatamente). Esiste un modo migliore per ottenere lo stesso risultato? Sto accumulando un sovraccarico non necessario nel processo di ricostruzione? Oppure questo è il modo corretto per farlo? Grazie in anticipo.

Ciao @maggiomj

Se controlli il database PostgreSQL di Discourse, vedrai che esiste una tabella per le impostazioni del sito e che la maggior parte di esse viene persistita (salvata) nel database.

Poiché non hai specificato esattamente quali impostazioni del sito ti interessano, è difficile dare una risposta precisa; ma in generale, una volta configurate queste impostazioni nel database, c’è poca ragione di impostarle di nuovo ad ogni rebuild nel file YAML.

Ovviamente, questo non vale per le impostazioni del sito personalizzate che non vengono persistite nel database.

Spero che questo ti aiuti.

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))
Digita "help" per ricevere assistenza.

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=# 

Se confronti le direttive delle impostazioni del sito nel tuo file YAML con quelle nel database, puoi avere un’idea piuttosto precisa di quali direttive nel tuo file YAML siano ridondanti.

In pratica, puoi eliminare quelle righe.

Ha senso farlo solo se il tuo obiettivo è creare una serie di siti diversi con quelle impostazioni, in modo che le impostazioni vengano cancellate al prossimo rebuild se qualcuno le modifica nell’UX.

Quale problema stai cercando di risolvere impostando quelle opzioni nel tuo file yml?