やること
以下の設定をどこかに記述する
Try {
sys.env("DATABASE_URL")
} match {
case Success(dbUrl) => {
val uri = new java.net.URI(dbUrl)
val userName = uri.getUserInfo().split(":")(0)
val password = uri.getUserInfo().split(":")(1)
ConnectionPool.singleton(s"jdbc:postgresql://${uri.getHost}:${uri.getPort}${uri.getPath}", userName, password)
}
case _ =>
ConnectionPool.singleton("jdbc:postgresql://localhost:5432/hoge", "user", "password")
}
解説
Heroku から渡される DATABASE_URL
のフォーマットは以下の様になっているが。これだとScalikeJDBCは受け付けてくれない。
postgres://<username>:<password>@<host>/<dbname>
なので上のコードを使って以下のフォーマットに変換してやる必要がある
jdbc:postgresql://<host>:<port>/<dbname>?sslmode=require&user=<username>&password=<password>
参照: https://devcenter.heroku.com/articles/heroku-postgresql#connecting-in-java