Railsで環境変数を使う(dotenv-rails)
初めに
こんにちは、大学生の独学エンジニアです。
今回は、デプロイする際やチーム開発の際に必要になってくる環境変数について学びたいと思います。
環境変数とは
環境変数というのは、その名の通りに環境が持つ変数のことでございます。
環境とは、OSのことです。OSが提供するデータ共有として一つの機能になります。
環境変数を扱うことで、メルアドや、パスワードなど第三者への情報漏洩を防ぐ
ことができます。
また、Githubにもアップロードされないという点もございます。
何を環境変数にするべきか
どういったものを環境変数にするべきかというと、セキュリティ上の問題がある値(情報)や開発環境に依存する設定値を環境変数
にします。すごく簡単に言うと公にしたくないような値(情報)になります。
公にしたくない値というのは、例で言うと、パスワードや個人用のAPIキーなどになります。
その他にシステムやプロジェクトで共通に使用する変数を環境変数として扱いこともあります。
dotenv-railsとは
dotenv-railsとは、環境変数を管理
する事ができるRailsのgemです。
dotenv-railsを扱い環境変数を管理する事で、3つのメリットが考えられます。
・開発したアプリが開発環境に依存してしまう事を防ぐことができる。
・パスワードや外部APIキーの情報を漏洩することがない。
・環境変数は、Githubなどにアップロードされない。
上記のようなメリットが考えられます。
dotenv-railsの導入
初めに、Railsにdotenv-railsを導入して行きます。
+ gem 'dotenv-rails'
上記のように記述をしたら、次にインストールをしていきます。
bundle install
dotenv-railsのインストールが完了したら、次に.envファイルを作成していきます。
.envファイルの作成
Railsアプリのフォルダ直下に.envファイルを作成していきます。
touch .env
で.envファイルを作成してください。
.envファイルで環境変数の定義
作成した.envファイルに環境変数にコードを記述していきます。
今回は、一つの例として下記に記述して行きます。
SECRET_KEY=13579
以上で環境変数を設定しましたので、rails c
で確認してみます。
rails cは、>
より右側が入力する部分になります。
環境変数の中身を見るには、ENV['SECRET_KEY]と入力します。
3.1.2 :001> ENV['SECRET_KEY']
上記と同じように入力すると、環境変数の値が以下のように表示されると思います。
3.1.2 :001> ENV['SECRET_KEY']
=> "13579"
こちらのように定義した環境変数を確認できたと思います。
もし、出力結果が、 nil
または"0"
となっていた場合は、プリロードされたプロセスが残っている原因も考えられますので、exit
と入力して、rails consoleから抜けて、spring stop
というコマンドを実行してください。
実行した後に、再度rails cで環境変数の確認をしてみてください。
ソースコード内で環境変数を使用
今回は、例として先ほどのENV['SECRET_KEY]をコントローラーのindexアクションで使用してみます。
def index
+ puts "設定値 #{ENV['SECRET_KEY']}"
@contents = Content.all
end
定義した後に、rails sでrailsサーバーを起動すると、
ターミナルの標準出力のところに、設定値 13579
という出力が確認できると思います。
こちらでソースコード内で指定する方法がわかりました。
ソースコード内でENV['指定した変数']
で環境変数を使用することが出来るので、試して見てください。
gitignoreに.envファイルを追加
次は、Githubに環境変数を定義している.envファイルをあげない
ようにしていきます。
こちらも重要なことなので、覚えておいて損はないと思います。
Gitの管理下から除外
gitの管理下に置きたくないフォルダやファイルは、.gitignoreファイルを利用して設定します。
gitの管理下から除外するために.gitignoreファイルの最終行に/.env
と記述します。
# See https://help.github.com/articles/ignoring-files for more about ignoring files.
#
# If you find yourself ignoring temporary files generated by your text editor
# or operating system, you probably want to add a global ignore instead:
# git config --global core.excludesfile '~/.gitignore_global'
.
.
.
.
+ /.env
下記のコマンドを実行して、.envファイルがgitの管理下から除外されたか確認してみます。
$ git status
コマンドを実行して結果を確認すると、.envファイル
が表示されていないと思いますので、これでgitの管理下から除外することが出来ました。
まとめ
エンジニアで業務をする際に環境変数を利用する場面というは、出てくると思い、このような記事を作成していただきました。
環境変数を利用することで、パスワードやAPIの情報漏洩を防ぐことができるため、とても重要なことでもです。
これからも、大学が終えWebエンジニアになるので、もっと情報発信や学習したことを投稿して行きたいと思います。
Discussion