为什么 Phoenix 需要一个用于环境变量的秘密配置文件?

Why does Phoenix need a secrets config file for environment vaiables?

我刚刚开始使用 Phoenix,我注意到在我生成的应用程序中有 prod.exsprod.secret.exs 文件。但是,prod.secret.exs 文件中加载的秘密值来自环境变量,实际上并没有提交给 repo。如果是这样,是否需要 prod.secret.exs 文件?我可以从 prod.exs 中的环境变量中加载所有内容然后收工吗?

prod.secret.exs 是在我们拥有易于使用的发布运行时配置之前管理机密的另一种方式。我相信现在这是一个遗产。

我将此作为答案而不是评论的原因是愿意声明 世界中几乎没有约定,[几乎] 一切都明确完成。

.exs是一个脚本文件,不像.ex文件,默认情况下不被mix编译。 prod.secret.exs 可能已命名为 foo.bar.baz.exs 使用它的唯一原因是它从 prod.exs.

显式加载

后者又被加载,因为 config.exs 有一行 import_config("#{Mix.env()}.exs")

也就是说,对于 的现代版本,人们可能会坚持使用系统环境配置和 运行时发布配置 。没有强制开发人员使用 prod.secret.exs 的约定,而且从未如此(该文件仍然由 env-specific 配置显式加载。)