【问题标题】:Play evolution not applied in custom Slick environment configuration播放进化未应用于自定义 Slick 环境配置
【发布时间】:2019-02-13 23:25:57
【问题描述】:

说明:

嗨。我正在为我的应用程序使用Play frameworkSlickPostgreSQL。所以我设计了CI_Pipelines 并在我的application.conf 中配置它们。当我们像这样设置光滑的配置时:

play.evolutions.db.default {
  enabled = true
  autoApply=true
} 
slick.dbs.default {
driver="slick.driver.PostgresDriver$"
db {
    driver=org.postgresql.Driver
    dbName=dbName
    url="jdbc:postgresql://127.0.0.1/dbName"
    user=***
    password=***
   }
}

在代码中(dao 文件):

@Singleton
class UserDao @Inject()(
                       protected val dbConfigProvider: DatabaseConfigProvider
                       )(implicit val ex: ExecutionContext) extends HasDatabaseConfigProvider[JdbcProfile] {
  import driver.api._
  val userTableQuery = TableQuery[UserTable]

所有工作都写EVOLUTIONplay 为我们提供。
但是,如果您想设置其他环境,例如 stagingproduction,您将失败 :D。
我阅读了Slick 的此文档,您可以从here 阅读它,它非常适合编写成功的配置文件。所以我是这样写的:

com.my.org {
env = "development"
env = ${?MY_ENV}
development {
  db {
    dataSourceClass = "slick.jdbc.DatabaseUrlDataSource"
    properties = {
      driver = "slick.driver.PostgresDriver$"
      user = "myuser"
      password = "*****"
      url = "jdbc:postgresql://myIP/dbName"
    }
    numThreads = 10
  }
}
staging {
db {
    ip=186.14.*.*
    ...
   }
}
production {
db {
    ip=196.82.*.*
    ...
   }
}
}

** 您必须注意的重要一点是,我的PostgreSQL 在我的(docker 容器)之外,所以我必须远程连接到它。

在代码中我们有:

    class UserDao @Inject()(
                       )(implicit val ex: ExecutionContext) {

  import driver.api._
  val db = Database.forConfig(s"$prefix.db")
  val userTableQuery = TableQuery[UserTable]

问题:

问题是现在游戏进化不适用。

问题:

我需要知道如何实现其中之一(以解决我的问题):

  1. 如何以之前描述的这种方式应用游戏进化(问题部分)?
  2. 如何以更好的方式设置我的环境?

【问题讨论】:

  • 如何在代码中读取 application.conf?
  • 好评 .Tnx。我将它添加到问题正文中

标签: scala playframework slick playframework-evolutions


【解决方案1】:

我的一位朋友 [通过电话] 向我咨询了这个问题,这是我们提出的解决方案:

slick.dbs.default.driver = "slick.driver.PostgresDriver$"
slick.dbs.default.db {
  driver = org.postgresql.Driver
  ip = localhost
  dbName = ***
  user = ***
  password = "***"
  url="jdbc:postgresql://postgresql/"${slick.dbs.default.db.dbName}
}

您还可以使用 Docker 创建一个 docker 网络并设置您的 PostgreSQL 容器名称而不是您的 IP 地址。

另外,如果您希望能够配置IP 地址,例如来自jenkinsPlay_Runtime_Guice,您可以使用这个:

url="jdbc:postgresql://"${?POSTGRESQL_IP}"/dbName"

【讨论】:

    猜你喜欢
    • 2011-03-16
    • 2018-04-28
    • 2017-07-24
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多