LoginSignup
43
52

More than 5 years have passed since last update.

Railsで環境変数を設定、取得

Last updated at Posted at 2015-04-26

前置き、概要説明

ことの始まりはRails4.1からconfig/secrets.ymlに下記のような環境変数が使われていたことです。

config/secrets.yml
development:
  secret_key_base: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

test:
  secret_key_base: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

本番サーバー向け(production)のsecret_key_baseプロパティが環境変数を読んでいて、デプロイ後に本番サーバーを確認したら画面が真っ白。ローカル開発環境なら~/.zshrcexport SECRET_KEY_BASE=xxxxxxxxxxで良さそうですが、本番サーバーはプロジェクト(サービス)毎に環境変数を隔離しておきたいです。

そこで今回はdotenv-railsというgemライブラリを用いて解決しました。

インストールおよび設定

本記事はBundlerを用いてRails環境を既に構築してある前提です。Bundler環境のインストール方法はこちら

1.dotenvインストール

gemライブラリdotenv-railsをインストールします。bundlerを用いるのでGemfileにdotenv-railsを追記します。

Gemfile
gem 'dotenv-rails'

bundleコマンドでインストールします。

ターミナル
$ bundle install

2.環境変数を設定

次に環境変数を設定します。本記事はconfig/secrets.ymlが原因で画面が真っ白になる問題の解決をサブ目標としているので、SECRET_KEY_BASEの生成も記述します。

ターミナル
$ bundle exec rake secret

上記コマンドでSECRET_KEY_BASEが生成されます。この文字列をコピーして設定ファイルに環境変数にして代入してあげます。dotenvの設定ファイルはプロジェクト配下の.envというファイルです。

.env
SECRET_KEY_BASE="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

これで、WEBサーバー(サービス)を再起動してあげれば、恐らく環境変数が取得出来ているはずです。SECRET_KEY_BASEに限らず、データベース向け設定などを環境変数として持たせておけば色々と便利かと思います。

43
52
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
43
52