19
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ローカルとDockerと両方で同じRailsプロジェクトを使うdatabase.yml

Last updated at Posted at 2016-03-24

docker-compose を使うと簡単に Ruby on Rails とデータベースサーバを別々に立ち上げて連携させられるのが便利だと感じます。
しかし、開発で何度も試すときに毎回 docker-compose build を待つのがたいぎい (広島弁) ので、そのままローカルでも動かせるように config/database.ymldb を環境変数にしました。
もっとエレガントな方法があったらお教え下さい。🙇🏽( 教えていただきました! 追記します!)

元の database.yml では docker-compose 用に host: db としていました。

(元)config/database.yml
development: &default
  username: postgres
  host: db
  adapter: postgresql

それを

config/database.yml
development: &default
  username: postgres
  host: <%= ENV['DATABASE_HOST'] %>
  adapter: postgresql

としました。
これにより、環境変数 DATABSE_HOST により切り分けられ、docker したいときは Dockerfile

Dockerfile
(前略)
ENV DATABASE_HOST db

と追記しておき、
ローカルで rails server したいときは

export DATABASE_HOST=localhost

としておけば両方使えました。

追記

コメントで @holidayworking さんに、次のように config/database.ymlENV.fetch() というのを使えば環境変数 DATABASE_HOST が定義されていない環境では localhost に接続されるようになることを教えていただきました。ありがとうございました。

host: <%= ENV.fetch('DATABASE_HOST', 'localhost') %>
19
11
2

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
19
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?