在Play 2.2中包含另一个配置文件时的环境变量替换

时间:2014-06-10 14:04:41

标签: scala playframework-2.2

包含其他配置文件时是否可以使用环境变量替换?

我想有类似的东西:

include "${HOME}/.foo/credentials.conf"

Configuration documentation提及查找资源包含替换但未提及。

这有效:

include "/home/me/.foo/credentials.conf"

我的HOME设置正确。

但到目前为止,include "${HOME}/.foo/credentials.conf"的所有尝试都失败了

背景:

我故意想要将凭证和其他敏感数据保留在我们的代码库之外,但是可以将它们用于本地开发环境以进行测试。我知道使用外部存储的更复杂的解决方案,如此处提示Playframework 2 - Storing your credentials,我们在实时和预览环境中使用类似的东西,但这些不适合本地开发设置。

另一种方法是将凭证文件包含在代码库中,但是使用git ignore来防止推送它,但它是脆弱的解决方案,风险是有人最终会推送它并破坏凭据。

1 个答案:

答案 0 :(得分:1)

TBH我甚至无法包含具有绝对路径/home/me...的文件无论如何,这对您有用的方法只是使用the same doc中描述的替代配置文件:

在文件 /home/me/.foo/credentials.conf 中,您需要包含application.conf - Play会将其回退到类路径中的文件(这是在VCS下):

include "application.conf"
myCredentials.user="Espinosa"
myCredentials.password="fooBar123"

然后run / start您的应用在本地使用此配置文件:

play -Dconfig.file=${HOME}/.foo/credentials.conf ~run

就是这样。

注意:当然在IDE中设置此添加更容易(例如IntelliJ:运行> 编辑配置)或编写包含此命令的shell脚本

enter image description here