Play framework の設定ファイルで環境変数を読み込む

最近 Play framework で Web アプリケーションを作成していますが、その中で設定ファイル (conf/application.conf など) の中で環境変数を読み込みたい場面がありました。例えば、OAuth 認証を使って twitter などのアプリケーションとの連携をする場合に、設定ファイルに直接 consumer key を記述するのははばかれるので、『環境変数に設定しておきそれを読み込む』といった感じです。

やり方

play framework のドキュメント にやり方が書いてありました :-)

具体的には application.conf の中で以下のように環境変数${? } で囲ってあげると良いようです。 (ENV_VARIABLE環境変数です。)

hoge=${?ENV_VARIABLE}

あとは、下記のように環境変数を設定しておくと読み込むことが出来ました。

$ export ENV_VARIABLE=jojo

ちなみに application.conf 内で include したファイル内でも正しく環境変数を読み込むことができました。

こうすることによって、git などでバージョン管理下にあるファイルでもコミットしたくない情報を隠すことが出来ます。

Heroku にデプロイする場合

以下のように Heroku での環境変数を設定してあげると、ちゃんと動きました。

$ heroku config:add ENV_VARIABLE=jojo

ちなみに application.conf 内で ${ENV_VARIABLE} のように ? を抜かしてもローカル環境では動きましたが、Heroku では上手く動きませんでした。 (詳しい方、教えていただけると幸いです)