LoginSignup
29
25

More than 5 years have passed since last update.

Ruby | dotenv gem で 環境変数をスマートに管理 #ruby #dotenv

Posted at

dotenv gem で環境変数をスマートに管理

概要

dotenv gem で環境変数をスマートに管理します。

他のエントリでの dotenv gem の登場頻度が増えてきたので、一度詳細にまとめようと思います。

なぜ dotenv gem が必要か?・・・の前に

dotenv gem がなぜ必要か、という話の前提に twelve-factor app に触れておく必要があります。
dotenv の README.md の出だしで

Storing configuration in the environment is one of the tenets of a twelve-factor app.

と記述されています。

twelve-factor app は Heroku が提唱しているモダンなアプリケーションを構築するための 12 のマニュフェストです。
詳細は下記をご確認ください。

さて、上記の 12 項目の中に

III. 設定 (Config)
設定を環境変数に格納する

というものがあります。
DBや認証の設定などはコードから隔離して、環境変数に設定します。
しかし、開発環境やステージング環境で環境変数を設定するのが現実的ではない場合があります。

:rage1: そこで dotenv gem の出番

dotenv gem を利用すると、 .env ファイルからロードした値を ENV に設定することができます。
このように、 dotenv gem は development での利用を意図して作られています。

Installation

$ gem install dotenv

or

  • Add dotenv gem to Gemfile
source "https://rubygems.org"

gem "dotenv"
  • And install
bundle install

:scroll: Usage

:baby_chick: 開発環境の場合

.env ファイルをプロジェクトルートに作成します

KEY1=dev_value1
KEY2=dev_value2

:chicken: Staging 環境の場合

.env ファイルをプロジェクトルートに作成します

KEY1=staging_value1
KEY2=staging_value2

:dragon_face: プロダクション環境の場合

環境変数を設定します。

export KEY1=production_value1
export KEY2=production_value2

ソースコード

開発環境共、Staging環境、プロダクション環境に同じコードで環境変数 or .env ファイルから値を取得できます。

require 'dotenv'
Dotenv.load

p ENV['KEY1'] # => dev_value1 or staging_value1 or production_value1
p ENV['KEY2'] # => dev_value2 or staging_value2 or production_value2
29
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
25