关于在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 数据库,会看到一个名为 site_settings 的表,大多数站点设置都持久化(保存)在该数据库中。

由于你没有具体说明感兴趣的站点设置,很难给出精确的回复;但一般来说,一旦这些站点设置在数据库中配置完成,通常就没有必要在每次重建时都在 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))
输入 "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 文件中设置这些参数来解决什么问题?