Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

公開したくない情報はdotenvにしまってしまう

...表に出したくない情報ってありますよね。
API鍵とかクレジットカード情報とかパスワードとかポエムとか。

これらを環境変数を使って便利に扱うgemが"dotenv"です。

$ gem install dotenv

普通にやると

>> puts ENV['USER_NAME']

# => nil

と、まぁ普通に格納されていません。

ここでディレクトリ内に以下のような内容の".env"ファイルをつくります。

USER_NAME = 'Den2Taro'
PASSWORD  = 'Unique and Exciting Campus'

さて、これをdotenvを読み込むと....

>> require 'dotenv'
>> Dotenv.load
>> puts ENV['USER_NAME']
#=> Den2Taro

>> puts %Q(#{ENV['PASSWORD']} == UEC)
#=> Unique and Exciting Campus == UEC

てな感じで、.envの内容を環境変数として呼び出してくれます。

何が嬉しい?

  • 公開したくない情報を.envに封印しておける。当該ファイルを.gitignoreすればpushしても安心
  • ワンライナーやるときも短くすむので可視性があがる。
  • 発展版のdotenv-railsだとDotenv.loadすらしなくてよい

おまけ...公式の認識

Should I commit my .env file?

It is recommended that you store development-only settings in your .env file, and commit it to your repository. Make sure that all your credentials for your development environment are different from your other deployments. This makes it easy for other developers to get started on your project, without compromising your credentials for other environments.

公式はむしろ、.envファイル自体は入れておく形式を推奨しているようです。
開発情報はそのまま、信用情報もプロジェクト専用のものをツッコんでおけ...と。
その方が手間がないですものね。

おまけ(2015/05/01追記)

他言語版のdotenvもあります。