如何在Play中保留单独的dev,test和prod数据库! 2框架?

时间:2014-05-19 13:09:43

标签: scala testing playframework

特别是对于测试用例,我希望将测试数据库分开,以便测试用例不会干扰开发或生产数据库。

分离开发,测试和生产环境有哪些好的做法?

EDIT1:某些背景

在Ruby On Rails中,对于不同的环境,按惯例有不同的配置文件。 Play也是如此! 2还支持吗?

或者,我是否必须烹饪配置文件,然后编写一些选择适当配置文件的粘合代码?

目前,如果我运行sbt test,它将使用开发数据库(配置为"默认"在conf / application.conf中)。但是我想Play!2使用不同的测试数据库。

EDIT2:播放的命令提供

玩! 2框架,我观察了这一点。

$ help play
Welcome to Play 2.2.2!

These commands are available:
-----------------------------
...OUTPUT SKIPPED...
run <port>                 Run the current application in DEV mode.
test                       Run Junit tests and/or Specs from the command line
start <port>               Start the current application in another JVM in PROD mode.
...OUTPUT SKIPPED...

有三个明确定义的命令用于&#34;测试&#34;,&#34;开发&#34;和&#34;生产&#34;实例是:

  • test:这会运行测试用例。因此它应该自动选择test配置。
  • run <port>:这会在指定的development上运行port实例。因此,此命令应自动选择development配置。
  • start <port>:这会在指定的production上运行port实例。因此,这应该自动选择production配置。

但是,所有这些命令都会选择conf/application.conf中提供的值。我觉得这里有一些空白。

如果我错了,请纠正我。

EDIT3:最佳方法是使用Global.scala

此处描述:How to manage application.conf in several environments with play 2.0?

3 个答案:

答案 0 :(得分:0)

良好做法是将应用程序的单独实例保存在单独的文件夹中并同步它们,即通过git repo。

如果您想保留单个实例,可以对每个环境使用alternative configuration file

答案 1 :(得分:0)

在您的application.conf文件中,您的数据库中有一个条目(或条目),例如: db.default.url=jdbc:mysql://127.0.0.1:3306/devdb

conf文件可以使用${?ENV_VAR_NAME}语法读取环境变量,因此将其更改为db.default.url=${?DB_URL}并使用环境变量。

答案 2 :(得分:0)

通过GlobalSettings,更简单的方法是完成此任务并更轻松地管理配置。有一种方法可以覆盖,其名称为“onLoadConfig”。请尝试在API_LINK

检查其API

基本上在您的conf / project文件夹中,您将设置类似于以下内容:

conf/application.conf --> configurations common for all environment
conf/dev/application.conf --> configurations for development environment
conf/test/application.conf --> configurations for testing environment
conf/prod/application.conf --> configurations for production environment

因此,您的应用程序知道为您的特定环境模式运行哪种配置。有关onLoadConfig上我的实现的代码段,请尝试查看我的文章blog post

我希望这会有所帮助。