Эволюция воспроизведения не применяется в пользовательской конфигурации среды Slick - PullRequest
0 голосов
/ 09 сентября 2018

ОПИСАНИЕ:

Привет. Я использую Play framework и Slick и PostgreSQL для своего приложения. Поэтому я проектирую 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=***
   }
}

и в кодах (дао-файлы):

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

все работает, все пишут, например EVOLUTION, которые play нам предоставили.
Но если вы хотите настроить другие среды, такие как staging или production, у вас не получится: D.
Я прочитал эту документацию Slick, которую вы можете прочитать по здесь , которая идеально подходит для написания успешного файла конфигурации. поэтому я пишу это так:

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 находится вне моего (док-контейнера), поэтому я должен подключиться к нему удаленно.

и в коде мы имеем:

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

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

ПРОБЛЕМА:

Проблема теперь в эволюции игры не применяется.

ВОПРОС:

Мне нужно знать, как реализовать одно из них (чтобы решить мои проблемы):

  1. как применить игровую эволюцию, как описано выше (в проблемной части)?
  2. как лучше настроить окружение?

1 Ответ

0 голосов
/ 09 сентября 2018

Мой друг проконсультировал меня по поводу проблемы [по телефону], и вот решение, которое мы нашли:

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, скажем, из jenkins или Play_Runtime_Guice , вы можете использовать это:

url="jdbc:postgresql://"${?POSTGRESQL_IP}"/dbName"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...