Play Framework(Scala)でherokuのPostgreSQLに接続する方法をせっかく調べたので記載しておく。
ドキュメント見ながら試行錯誤したので、正しい方法かどうか不明。
誤ってる点があればご指摘頂きたく。。
インストールされているアドオンの確認
heroku addons --app アプリケーションID
=== アプリケーションID Configured Add-ons
heroku-postgresql:dev HEROKU_POSTGRESQL_BRONZE
heroku-postgresql:dev HEROKU_POSTGRESQL_CHARCOAL
heroku に postgresqlアドオンがインストールされていることを確認。
インストールされていない場合、以下のコマンドで追加
heroku addons:add heroku-postgresql --app アプリケーションID
データベースのURLの確認
heroku config
DATABASE_URL: postgres://XXXXXXXXXXXXX
・・・
DATABASE_URLが表示されることを確認
Procfileの設定
Procfileに以下の内容を記述
web: target/start -Dhttp.port=${PORT} -DapplyEvolutions.default=true -Ddb.default.url=${DATABASE_URL} -Ddb.default.driver=org.postgresql.Driver
application.confにDBのURLを指定
db.default.url="jdbc:postgresql://localhost/XXXXX"
db.default.url=${?DATABASE_URL}
上記のように書くと、環境変数DATABASE_URLがセットされているときdb.default.urlの値が更新される。
ローカルでテストするときdb.default.urlはローカルのURLになり、herokuで動かす時は${DATABASE_URL}
となる。
herokuにpushしてテスト
herokuにgit pushすればよしなにdeployされる
うまくいかないとき
ログを見て何とかする
heroku logs
[その他]サーバ上のpostgre SQLにpsqlコンソールで接続する
heroku pg:psql
但しローカルにpsqlがインストールされていないと実行できない。