RailsにDotenvを導入!環境変数を管理しよう! #rubybg


DotenvというGemを導入すると、Gitのリポジトリには含めたくないパスワードや外部APIの情報を環境変数として扱えます。

https://github.com/bkeepers/dotenv

Dotenvで何ができる?

データベースの認証情報や外部サービスの資格情報等の、開発環境間で変更される可能性のあるものは、コードから環境変数に設定しておくとセキュリティ的にも良いとされています。

ただ、複数のプロジェクトが実行されている開発マシンやサーバーに環境変数を設定することは運用が大変です。
dotenvを導入すると .env のファイルからENVに環境変数をロードできるようになります。

The Twelve-Factor App
環境によって変わる情報を環境変数として保存することは、Webアプリケーションの開発において便利でスケールしやすい方法論として公開されている「The twelve-factor App」でも紹介されている方法です。

環境

Rails 5.0.1

インストール

Gemfileに下記を追加します。

$ gem 'dotenv-rails', require: 'dotenv/rails-now'

インストールします。

$ bundle install --path vendor/bundle --jobs=4

「–jobs=4」をオプションとして指定すると並列処理でインストールが行われるので高速です。

.evn を作成

.env ファイルを新規作成します。

$ vi .env

適当な環境変数を設定します。

HOGE="fuga"

コンソールを起動して、呼び出せるか確認してみましょう。

$ bundle exec rails c                                                                  [1] pry(main)> Dotenv.load
=> {"HOGE"=>"fuga"}
[2] pry(main)> puts ENV['HOGE']
fuga
=> nil

Dotenv.load を実行してからでないと、ENVで環境変数にはアクセスできないので、そこだけ注意です。
あとは、Gitの管理外になるように .gitignore.evn を追加すれば完了です。

これで、環境によって変わる設定を安全に取り扱うことができます。

AWSおすすめ書籍

AWSの勉強で参考になった書籍です!

AWSで質問したいことがある!

Teratail(テラテイル)

WEBエンジニア専用のQ&Aサイトです。AWSに関しての質問や回答も活発に行われています。ぜひ、会員登録をして利用してみると良いと思います(^o^)

エンジニアのためのQ&Aサイト【teratail】