Rails использует конфигурацию базы данных из двух источников - ENV['DATABASE_URL']
и config/database.yml
.
ENV['DATABASE_URL']
- это env var, устанавливаемый в оболочке, операционной системе или при запуске процесса.
Для примера установки ENV['DATABASE_URL']
в:
postgresql://localhost/myapp
Будет ли подключаться к правильной базе данных через postgres.Так Heroku устанавливает, к какой базе данных подключается ваше производственное приложение.
config/database.yml
- это просто файл YAML, который считывается ActiveRecord при настройке базы данных.Он содержит хэш хэшей - какой ключ используется определяется Rails.env
(который устанавливается с помощью ENV['RAILS_ENV']
).
common: &common
adapter: postgresql
encoding: utf8
host: localhost
development:
<<: *common # this is YAML syntax to merge this hash with &common
database: myapp
Значения в ENV['DATABASE_URL']
объединяются со значениями из config/database.yml
но ENV['DATABASE_URL']
имеет приоритет.
Дружеский совет:
- Просто установите минимальный минимум в
config/database.yml
- все, например, имена пользователей, пароли и т. д., должно быть установлено с помощью ENV['DATABASE_URL']
по соображениям безопасности и во избежание войн разработчиков.