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です。便利ですね。