1. 概要
- railsでは環境変数等をどのように管理しているのか気になった
- 設定方法について調べた内容をまとめる
参考資料:dotenv-railsを使って環境変数を管理しよう
2. 環境変数とは
以下を参照すること
3. dotenv-railsとは
環境変数を管理する事が出来るgem
プロジェクトルートに.env
を作成してこの中に設定を記載することで、自動で読み込んで環境変数として使用できる
4. 導入の流れ
4.1. .Gemfile
に追加
gem 'dotenv-rails'
4.2. インストール
$ budle install
4.3. .env
ファイルの作成
プロジェクトルートで作成すること
また、環境ごとに設定を分けたい場合は.env
の命名ルールで分けるようになっている
定義していある.env
ファイルは環境に応じて読み取られ、同じ環境変数は優先順位が高いほうが優先される
※.env.local.<環境名>
という指定もできるようだが使用用途が分からなかったので除外
ファイル名 | 環境 | 優先順位 |
---|---|---|
.env | 全環境 | 低 |
.env.development | 開発環境 | 中 |
.env.test | テスト環境 | 中 |
.env.production | 本番環境 | 中 |
$ touch .env #全環境共通の環境変数を定義するファイル
4.4. 環境変数の設定
作成した.env
ファイルに環境変数を設定する
作成した環境変数はENV
に自動で設定される
SAMPLEKEY=samplevalue
4.5. 呼び出す
プログラムから以下のように呼び出せる
また、以下はirbを使用したコンソールでの呼び出し
> ENV['SAMPLEKEY']
=> "samplevalue"
5. 環境変数作成ファイルのボイラープレートを作る
.env.boiler
などのファイルを作成し、.envで必要な設定をおいておくことで
新規にアサインされた開発者がボイラープレートを使用して.env
ファイルを作成できる
プロジェクトで設定する必要のある開発環境が一目でわかるので有用
※ボイラープレートの環境変数に設定する値はダミーデータとすること
5.1. 導入の流れ
5.1.1. .env.boiler
を作成する
5.1.2. Git管理するためにPushする
5.1.3. 新規開発者がプロジェクトをローカルにcloneする
5.1.4. cloneしてきたプロジェクトの.env.boiler
ファイルをコピーして新しくファイルを作成する
$ cp .env.boiler .env
5.1.5. 環境変数を自分の設定に合わせる
5.1.6. Git管理から外すように.gitignore
で設定する
6. 具体的な用途
データベースのユーザー名やパスワードを環境変数として設定する
- database.ymlを編集する必要がなくなる
-
.emv
関連のファイルだけローカルで管理すればdatbase.yml
はバージョン管理に挙げることができるようになる
default: &default
#defaultの設定は省略
development:
<<: *default
database: dotenv_development
username: <%= ENV['DB_USERNAME'] %> # 開発環境の環境変数を参照
password: <%= ENV['DB_PASSWORD'] %> # 開発環境の環境変数を参照
DB_USERNAME = 'sample_user'
DB_PASSWORD = 'password'
まとめ
Rails 5.2
以降はEncryptedCredentials
とかいう暗号化する機能が追加されたらしいがとりあえずこれで環境変数の管理をやってみる