Railsで環境毎のdatabase.ymlの違いを吸収する
こんにちは。ミライスタートの高橋です。
チームでRailsアプリを作成している際、databaseの設定(ユーザー名やパスワード)が開発環境毎に違う場合があるかと思います。
自分の環境に合わせて編集したけれど、毎回差分として表示されて面倒な場合は
figaro をお勧めします。
Figaroとは
インストール
- Gemfile に記述
gem 'figaro'
- vendor/bundle 以下に figaro をインストール
$ bundle install --path vendor/bundle
- 設定ファイルを自動生成
$ 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
を利用することで、開発環境毎の設定の違いを定義することができ、
不要な差分がでなくなり開発に集中できますね。