the industrial

ブログと言うより自分のためのメモ以外の何モノでもないです。でも読んでくださってありがとうございます。

Playのapplication.conf設定内容に、Herokuの環境変数をバインドさせる方法

くっそ初心者向けの内容で恐縮ですが、僕自身初心者なので。

あと、タイトルの表現の仕方が間違っているかもしれないけど、ご愛嬌。

どういう事かというと、今までPlayのapplication.confのDatabase設定(エンドポイント、ユーザーID、パスワード)はべた書きしていたんだよね。

でもそうすると、application.confがプライベートリポジトリー意外では管理出来なかったりで、色々まずい。

なので、Bitbucketの無料プライベートリポジトリーで管理するしか無かったんだけど、めっちゃ開発している自作アプリをGithub上で管理して、なんかContributionsを俺色(緑色)に染められなくて残念な感じがしてたんだ。

それは具合が悪いというか、そもそもHerokuのガイドラインにもそりゃー良く無いって書いてある。

じゃあどうすればいいのかって話。

実はとっても簡単。

Herokuの環境設定を整備

僕の自作アプリは、Heroku+ClearDBを利用していて、ClearDBのConfigはこんな感じになっている。

$ heroku config
CLEARDB_DATABASE_URL: mysql://ユーザー名:パスワード@DBのホスト/データベース名?reconnect=true

これを元に

$ heroku config:add DATABASE_URL='mysql://ユーザー名:パスワード@DBのホスト:3306/データベース名?reconnect=true'

とかってやってあげておくと

$ heroku config
DATABASE_URL:         mysql://ユーザー名:パスワード@DBのホスト:3306/データベース名?reconnect=true

となる。

これでHeroku側の準備は完了。

application.confを修正

${?}で環境変数を囲むんだけど、下記の様に、HerokuにDATABASE_USERとかDATABASE_PASSWORDがHerokuのConfigに無くても大丈夫だった。※DATABASE_URLから取得するっぽい。

db.default.url=${?DATABASE_URL}
db.default.user=${?DATABASE_USER}
db.default.password=${?DATABASE_PASSWORD}

あとはこのapplication.confをデプロイするだけ。

ちょー簡単。

おまけ

一度pushしたファイルの履歴を削除するgitコマンド例

まあネットで調べれば幾らでも出てくる事なんだけどね。

今までapplication.confにDBのパスをべた書きしてpushしていたので、その履歴削除したいって場合の例。

$ git filter-branch --index-filter 'git rm --cached --ignore-unmatch conf/application.conf' HEAD
$ git push heroku master --force