gpt4 book ai didi

scala - Play 2.5.x : How to change the default evolutions directory location?

转载 作者:行者123 更新时间:2023-12-04 02:08:21 25 4
gpt4 key购买 nike

有没有办法更改默认的 evolutions 目录位置?我需要这个,因为我有以下明显罕见的用例:

  • 对于 Dev/Prod,我使用 default 数据库 Postgres
  • 对于单元测试,我需要使用 H2 内存数据库
  • evolutions/default/1.sql 是可移植的(Postgres 和 H2)
  • evolutions/default/2.sql 是不可移植的 Postgres 脚本
  • 在 Dev/Prod 中,我需要进化来运行 1.sql2.sql
  • 在单元测试中,我需要进化以仅运行 1.sql

有没有办法使用 application.conf 或一些 sbt 设置 alla 例如

javaOptions in Test += "-Dconfig.file=conf/application.test.conf"

能够更改 test 的默认进化目录吗?

只要我能说例如,我的 OP 就会得到解决(理论上是行不通的!)

测试中的 javaOptions += "-Devolutions.prefix=conf/testdatabase/"

然后有:

conf/
evolutions/default/1.sql
2.sql
testdatabase/evolutions/default/1.sql -> ../../../evolutions/default/1.sql

对于我不知道的这个问题的任何其他解决方案,我都会很高兴......只要它有效:)

最佳答案

在您的测试配置文件中,通过添加此行关闭 evolutions 的默认应用程序。

# Evolutions should not be applied by default
play.evolutions.db.default.enabled = false

在您的测试文件中定义一个辅助方法,该方法将在调用时应用 Evolutions。

import play.api.db.Database
import play.api.db.evolutions.{DatabaseEvolutions, EvolutionsReader, ThisClassLoaderEvolutionsReader}

def applyEvolutions(database: Database,
evolutionsToSkip: Seq[Int],
evolutionsReader: EvolutionsReader = ThisClassLoaderEvolutionsReader,
autocommit: Boolean = true,
schema: String = ""): Unit = {
val dbEvolutions = new DatabaseEvolutions(database, schema)
val evolutions = dbEvolutions.scripts(evolutionsReader).filterNot(s => evolutionsToSkip.contains(s.evolution.revision))
dbEvolutions.evolve(evolutions, autocommit)
}

然后在您的测试中重写 beforeAllafterAll 方法:

override def beforeAll(): Unit = {
applyEvolutions(database, Seq(2))
}

override def afterAll(): Unit = {
Evolutions.cleanupEvolutions(database)
}

您可以按如下方式访问数据库:

import play.api.db.{ DBApi, Database }
val databaseAPI = app.injector.instanceOf[DBApi]
val database = databaseAPI.database("default")

关于scala - Play 2.5.x : How to change the default evolutions directory location?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41403234/

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