Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
23
Help us understand the problem. What is going on with this article?
@tbpgr

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

More than 5 years have passed since last update.

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
23
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
tbpgr
Rubyを扱う人事(研修開発、エンジニア採用) Learning Designer。 tbpgr の読み方は(てぃーびー) 個人ブログでも色々と情報を垂れ流してます。 http://tbpgr.hatenablog.com/
studist
「伝えることを、もっと簡単に」をミッションにビジュアルSOPマネジメントプラットフォームのBtoB SaaS「Teachme Biz」を開発・運営するスタートアップ

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
23
Help us understand the problem. What is going on with this article?