公式
https://rubygems.org/gems/dotenv
仕組み
仕組みは、割とシンプルで、プロジェクトのカレントディレクトリに下記のように環境変数用のファイルを作成しておくと、それぞれの環境の環境変数を自動で登録してくれるというものです。
ファイル名 | 内容 |
.env.development | 開発環境用の環境変数を定義 |
.env.production | 本番環境用の環境変数を定義 |
.env.test | テスト環境用の環境変数を定義 |
.env.local | ローカル環境用の環境変数を定義 |
<スポンサードリンク>
設定
1.gemファイルに下記を追記し、bundle install を実行します。(環境変数のロードは勝手にやってくれます。)
gem 'dotenv-rails'
2.プロジェクトのカレントディレクトリに環境変数設定ファイルを追加
%touch .env.development %touch .env.production
3.環境変数設定ファイルに環境変数を記述
今回は、環境変数によく入れるdbの情報を例にしています。
% cat .env.development DATABASE_NAME=DEVELOPMENT_DB DATABASE_USER=DEVELOPMENT_USER
% cat .env.production DATABASE_NAME=PROSUCTION_DB DATABASE_USER=PRODUCTION_USER
4.ENVを使って、各環境の環境変数にアクセスできることを確認
% RAILS_ENV=development rails c 2.4.0 :001 > ENV['DATABASE_NAME'] => "DEVELOPMENT_DB" 2.4.0 :002 > ENV['DATABASE_USER'] => "DEVELOPMENT_USER" % RAILS_ENV=production rails c 2.4.0 :001 > ENV['DATABASE_NAME'] => "PROSUCTION_DB" 2.4.0 :002 > ENV['DATABASE_USER'] => "PRODUCTION_USER"
まとめ
このように「dotenv-rails」で環境ごとに異なる変数を管理することができます。
また、「dotenv-rails」のような環境変数管理用のgemを使う利点は、
データベースの接続情報や鍵情報などの情報をソースコードにいれる必要がなくなることと、
ソースコード上では、ENV[‘KEY’]と書くだけで実行時にその環境にあった変数を入れてくれるため、
ソースを書く際に環境を意識する必要がなくなることです。
また、ソースコードにDBの接続情報などの重要な情報が入らなくなるので、ソースコードが仮に漏れたとしても、DBの接続情報を盗まれ、実際にデータが盗まれるなど、2次被害が発生することを防ぐことになります。
関連
Rails 初めてのAPI作成 1時間でとりあえず動くまで!!