LoginSignup
107
115

More than 5 years have passed since last update.

Railsで使える環境変数を管理できるgem(dotenv-rails)や.envの導入方法

Posted at

はじめに

DBのパスワードなどの設定は、PCというか開発環境ごとに異なることが多いです。ですが、Railsを利用して共同開発する場合、database.ymlなどに、DBに関する設定をそのまま定数に記入すると、ある特定の環境でしか動かなくなるでしょう。また、そういうデータは、GitHubのようなオンラインのホスティングサービスに公開したくないものです。

そこで、環境に依存する設定値を環境変数として扱って、どんな開発環境のDB設定値でも柔軟に対応できるgem(dotenv-rails)を使って管理して見ましょう。

環境

  • macOS HighSierra 10.13.6
  • Rails 5.2.0
  • Ruby 2.5.1
  • mysql 5.7.22
    • mysqlはdockerに作成
  • Docker version 18.03.1-ce

導入方法

Gemfileに以下を記述

gem 'dotenv-rails'

そして、書きを実行することで、gemを インストール

$ bundle install

環境変数を設定

top of your application に、.envファイルを作成。

例えばこんな感じ。

.env
RAILS_MAX_THREADS = 5
DATABASE_HOST = 127.0.0.1
DATABASE_USER = test
DATABASE_PASSWORD = test
DATABASE_NAME = my_project

すると、rails cで確認できるようになります。

irb(main):002:0> ENV['RAILS_MAX_THREADS']
=> "5"
irb(main):003:0> ENV['DATABASE_HOST']
=> "127.0.0.1"
irb(main):004:0> ENV['DATABASE_USER']
=> "test"

環境変数の利用法

database.yml

・・・

default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  host: <%= ENV.fetch("DATABASE_HOST") { "127.0.0.1" } %>
  username: <%= ENV.fetch("DATABASE_USER") { "test" } %>
  password: <%= ENV.fetch("DATABASE_PASSWORD") { "test" } %>
  database: <%= ENV.fetch("DATABASE_NAME") { "my_project" } %>

・・・

これで使えるようになります。

こうすれば、環境ごとに異なる設定値でも.envに記述すれば、実行環境が異なっても使えるようになります。

参考

107
115
1

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
107
115