Rails4の非公開情報をdotenvで管理する

Posted by Tatsuyano on Wed, May 13, 2015
In
Tags ruby, heroku, rails

TwitterのAPIキーなど、公開したくない情報をどこに設定すればいいか調べたところ、 config/secrets.ymlに設定して、.gitignoreして使うようなので、設定してみました。

# config/secrets.yml
development:
  twitter_api_key: hogefuga.....

# 呼び出し側
key = Rails.application.secrets.twitter_api_key

しかしherokuを利用する場合、この`secrets.yml`というファイル自体必須なので、`.gitignore`するわけにはいきません。 * [How to solve error "Missing secret_key_base for production environment" on Heroku](http://stackoverflow.com/questions/23180650/how-to-solve-error-missing-secret-key-base-for-production-environment-on-h) ## dotenv-railsの設定 そこで検討した結果、`dotenv-rails`というGemを使うことにしました。 このGemを使うと、アプリケーションごとに環境変数(非公開情報)が設定できるようになり、 `secrets.yml`に公開したくない情報を設定しなくても良くなります。
# Gemfile
gem 'dotenv-rails'

まず、アプリケーションのディレクトリの直下に.envというファイルを作成し、環境変数を設定します。

# .env
TWITTER_API_KEY="hogehoge"
TWITTER_API_SECRET="fugafuga"

読み出す時は、以下のように指定します。

puts ENV[‘TWITTER_API_KEY’] # => “hogehoge”

最後に.envファイルを.gitignoreします。
以上で完了です。

herokuに環境変数を設定する

ちなみに、herokuに環境変数を設定するには以下のように指定します。

$ heroku config:add TWITTER_API_KEY=“hogehoge”    –app アプリ名
$ heroku config:add TWITTER_API_SECRET=“fugafuga” –app アプリ名

参考サイト