在 Scala 中设置项目的好方法是什么,它根据环境使用不同的配置。
我需要专门为 设置不同的数据库发展 , 测试 和 生产环境(类似于在 Rails 中所做的)
最佳答案
我正在使用的另一个策略包括使用 includes .
我通常将我的 DEV 设置存储在 default 中application.conf
文件然后我为其他环境创建一个新的 conf 文件并包含默认文件。
假设我的 DEV conf application.conf
看起来像这样:
myapp {
server-address = "localhost"
server-port = 9000
some-other-setting = "cool !"
}
然后对于 PROD,我可以有另一个名为
prod.conf
的文件。 :include "application"
# override default (DEV) settings
myapp {
server-address = ${PROD_SERVER_HOSTNAME}
server-port = ${PROD_SERVER_PORT}
}
请注意,我仅覆盖在 PROD 环境中更改的设置(因此
some-other-setting
与 DEV 中的相同)。配置引导代码不测试任何东西
...
val conf = ConfigFactory.load()
...
要从 DEV 切换到 PROD conf,只需传递一个带有要加载的配置文件名称的系统属性:
java -Dconfig.resource=prod.conf ...
在 DEV 中,不需要通过它,因为
application.conf
将由 default 加载.所以这里我们使用 Typesafe Config的默认加载机制来实现这一点。
我创建了一个简单的 project来演示这项技术。随意克隆和实验。
关于scala - Scala 环境中的特定配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21607745/