Twitter bot等をRailsで作った際にGitHubにアクセストークン等が公開されてしまうので、それを回避しつつHeroku上で動かすということができないか考えていました。
また、今回はHerokuとGitHubが紐づけされていて、Automatic deploysが有効になっていることを想定しています。
##gemのダウンロード
$ gem 'dotenv-rails'
のみです。
##.envファイル作成
ルート直下に.envという名前でファイルを作成しそこに環境変数を記述していきます。
CONSUMER_KEY = "hogehoge"
CONSUMER_SECRET = "fugafuga"
ACCESS_TOKEN = "hogefuga"
ACCESS_TOKEN_SECRET = "fugahoge"
すると、どこからでも以下のようにアクセスできます。
**```
puts ENV["CONSUMER_KEY"] #=> "hogehoge"
##.gitignoreに.envを追加
.gitignoreに.envを書き足し保存します。
こうすることにより.envがGitのトラッキングの対象外になるのでGitHubにpushした際に.envは上がらなくなります。
既にpushしたことがあった場合は、
```bash
$ git rm --cached .env
をすれば管理対象から除外できます。
以上により.envファイルをGitHub上で公開せずに済みます。
##Herokuでの設定
上記のままではHeroku上にも.envが無いためエラーが起きてしまいます。
そこでheroku-configというプラグインを使用し、Herokuに直接.envを上げます。
$ heroku plugins:install heroku-config
$ heroku config:push
これでHeroku上の環境変数の設定を行うことができました。
$ heroku config
$ heroku config:set ENV_VAR_NAME="value"
のように直接値を変更しました。
このように一つ一つ直接編集することは可能ですが、多くの環境変数を使う際には.envでまとめてあげたほうが楽ですよね。
##参考リンク
http://qiita.com/colorrabbit/items/18db3c97734f32ebdfde
http://qiita.com/closer/items/f8d8ba00ae86d7051764