hakobera's blog

技術メモ。たまに雑談

Heroku のローカル開発環境で環境変数を簡単に指定する方法

Heroku で開発していると、APIやセッションの秘密鍵などを環境変数に格納することになります。例えば、以下のようなコードです。

new MemorySession({ key: process.env.SESSION_KEY });

Heroku でこれを使うには以下の設定をします。

$ heroku config:add SESSION_KEY=xxx

で、これをローカルの開発環境でも使えるようにするには、

export SESSION_KEY=xxx
node app.js

とか

SESSION_KEY=xxx node app.js

みたいにします。ただ、これ数が増えてくると面倒くさいので、起動用のシェルスクリプトを作ったりしていました。それでも解決はできるのですが、実はもう一つ解決方法があります。それは、foreman の機能を使うことです。

Heroku はアプリの起動に foreman というツールを使っています。そして、foreman にはアプリケーションのルートフォルダ直下の .env という名前のファイル中に書かれた環境変数を、start 時に自動的にエクスポートしてくれる機能があります。

簡単な例を上げます。

.env
SESSION_KEY=xxx
API_KEY=yyy
app.js
console.log(process.env.SESSION_KEY); // => xxx
console.log(process.env.API_KEY); // => yyy
Procfile
web: node app.js
起動方法
foreman start
出力結果
00:02:51 web.1     | started with pid XXXX
00:02:51 web.1     | xxx
00:02:51 web.1     | yyy

で、あとは .env がコミットされないように、.gitignore に追加しておけばOKです。便利ですね。