Railsの環境変数管理gem、dotenvの使い方徹底解説

公式

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次被害が発生することを防ぐことになります。

関連

Ruby on Rails データベース構築設定まとめ

Rails 初めてのAPI作成 1時間でとりあえず動くまで!!

スポンサードリンク



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA