heroku向けrubyアプリと環境変数

twitter apiなどを使うアプリではその認証情報が必要になるけど、これを直接コードに書いたままgithubでさらしてしまう等はよろしくないので環境変数を使いたい。そこでheroku向けのrubyアプリでの環境変数の使い方について調べたのでメモ、、、と思ったら@shimosukさんの記事を発見、ここにほとんど書かれてました。

Railsアプリで認証のための情報はバージョン管理に含めないために - 千鳥足プログラマーの歩む道@shimosuk

ということでここに書かれてないことだけメモ。

sinatraアプリのProcfile

sinatraアプリの場合はProcfileはこんな感じになります。

web: bundle exec ruby app.rb -p $PORT

さらにshotgunで起動する場合はこんな感じ。

web: shotgun app.rb -p $PORT

Procfileを指定

foremanのfオプションを使えば任意のProcfileを指定することができる。例えばProcfile.devというファイルを指定して起動するのはこう。

$ foreman start -f Procfile.dev

これなら通常起動とshotgun起動それぞれのProcfileを用意しておき任意で切り換えることが可能。

.envを利用してherokuの環境変数を一発更新

heroku上の環境変数の設定方法のひとつにheroku-configというプラグインを使う方法があって、これなら.envファイルを利用して一発設定ができて便利。まずはプラグインのインストールを。

$ heroku plugins:install git://github.com/ddollar/heroku-config.git

下記コマンドを叩くだけで.envファイル内で定義された内容がherokuの環境変数に反映されます。

$ heroku config:push

個々設定は手間だと思っていたのでこれは便利。詳しくはここに。
Configuration and Config Vars | Heroku Dev Center