maggiomj
(Matt Maggiore)
1
在我的 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"
这样做似乎很愚蠢(每条语句单独执行)。有没有更好的方法来实现?我在重建过程中是否积累了不必要的开销?或者这就是正确的做法?提前感谢。
neounix
(Dark Matter)
2
你好 @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 中的站点设置指令是冗余的。
pfaffman
(Jay Pfaffman)
4
只有当你旨在创建多个具有这些设置的网站,并且希望在 UX 中有人修改这些设置后,在下次重建时自动清除这些设置的情况下,这样做才有意义。
你试图通过在 yml 文件中设置这些参数来解决什么问题?