gpt4 book ai didi

database - 如何在 Play 2.0 中为每个环境设置不同的数据库?

转载 作者:太空狗 更新时间:2023-10-30 01:39:58 24 4
gpt4 key购买 nike

我希望我的 Play 应用针对测试、本地和生产(生产是 Heroku)环境使用不同的数据库。

application.conf 我有:

db.default.driver=org.postgresql.Driver 

%dev.db.default.url="jdbc:postgresql://localhost/foobar"
%test.db.default.url="jdbc:postgresql://localhost/foobar-test"
%prod.db.default.url=${DATABASE_URL}

这似乎行不通。当我运行 play testplay run 时,所有数据库访问失败:

 Configuration error [Missing configuration [db.default.url]] (Configuration.scala:258) 

我有几个问题:

  • 总的来说,我对数据库的配置方式有点困惑在 Play 中:看起来只有 dbdb.[DBNAME]db。
    [DBNAME].url
    和不同的教程在其中做出不同的选择那些。某些看起来应该有效的表达式(例如 db.default.url = "jdbc:..." 失败并出现错误,即在预期对象的位置提供了字符串)。

  • 我看到其他人建议我创建单独的 prod.confdev.conftest.conf 文件每个都包含 application.conf 然后包含特定于数据库的配置。但在那种情况下,当我从 Play 控制台运行 test 时,如何指定要使用的数据库?

  • %env 语法应该在 Play 2 中工作吗?

  • play test 使用指定环境的正确方法是什么?

最佳答案

在 Play 2 中没有不同的配置环境。相反,您只需设置或覆盖 conf/application.conf 文件中的配置参数。一种方法是在 play 命令行上执行,例如:

play -Ddb.default.driver=org.postgresql.Driver -Ddb.default.url=$DATABASE_URL ~run

您还可以告诉 Play 使用不同的配置文件:

play -Dconfig.file=conf/prod.conf ~run

有关 Heroku 的 Procfile 示例,请参阅:
https://github.com/jamesward/play2bars/blob/scala-anorm/Procfile

Play Docs 中的更多详细信息:
http://www.playframework.org/documentation/2.0/Configuration

关于database - 如何在 Play 2.0 中为每个环境设置不同的数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10391987/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com