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
104
Help us understand the problem. What is going on with this article?
@ryosuketter

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

More than 1 year has passed since last update.

はじめに

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に記述すれば、実行環境が異なっても使えるようになります。

参考

104
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
life-a-tm
人生のイベントや日常生活に密着した比較サイト、情報サイト等様々なウェブサービスを企画・開発・運営

Comments

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