ミライスタート TECH系ブログ

株式会社ミライスタートのエンジニア達が気になったTECH系の記事等をアップしています!

Railsで環境毎のdatabase.ymlの違いを吸収する

こんにちは。ミライスタートの高橋です。
チームでRailsアプリを作成している際、databaseの設定(ユーザー名やパスワード)が開発環境毎に違う場合があるかと思います。
自分の環境に合わせて編集したけれど、毎回差分として表示されて面倒な場合は
figaro をお勧めします。

Figaroとは

開発環境毎に環境変数を定義し、管理できるプラグインです。

インストール

  1. Gemfile に記述
gem 'figaro'
  1. vendor/bundle 以下に figaro をインストール
$ bundle install --path vendor/bundle
  1. 設定ファイルを自動生成
$ bundle exec figaro install
  create config/application.yml
  append .gitignore

上記コマンドを実行するとconfig/application.yml
.gitignore/config/application.ymlが追加されます。

以上がプラグインのインストール方法です。

利用方法

config/application.ymlに記載するだけで環境変数を定義できるのですが、
/config/application.ymlはgit管理の対象になっていないため
サンプルファイル(application.yml.sample)を作成し、そちらをgit管理するのが定番のようです。

以下、私が使用しているSampleファイルです。

# Application environment
RAILS_ENV: development

# Database Settings
DB_HOST: localhost
DB_DATABASE: sample
DB_USERNAME: root
DB_PASSWORD: root
DB_POOL: 5

定義した変数を利用する場合は、通常の環境変数を使用する場合と同じく以下の方法で取得できます。
ENV['DB_HOST']


* database.ymlで使用する場合

default; &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV['DB_POOL'] %>
  host: <%= ENV['DB_HOST'] %>
  database: <%= ENV['DB_DATABASE'] %>
  username: <%= ENV['DB_USERNAME'] %>
  password: <%= ENV['DB_PASSWORD'] %>

figaroを利用することで、開発環境毎の設定の違いを定義することができ、
不要な差分がでなくなり開発に集中できますね。