Приложение Rails на Heroku, похоже, не нуждается в файле database.yml - PullRequest
0 голосов
/ 09 марта 2020

Я работаю над приложением Rails с несколькими соавторами, и мы решили начать использовать отдельные файлы database.yml в течение некоторого времени, пока не получим конфигурацию, которая будет работать для всех нас.

После добавления базы данных .yml к файлу .gitignore и отправив версию без него, я понял, что это, скорее всего, помешает запуску приложения Heroku.

Моя путаница заключается в том, что развертывание прошло успешно и файл database.yml не нужен , Почему это? Кешируется ли наш старый файл database.yml?

Ответы [ 2 ]

1 голос
/ 09 марта 2020

Ах да, старая война разработчиков db config.

Heroku на самом деле использует решение этой проблемы - Rails объединяет конфигурацию базы данных из database.yml с ха sh, созданным в результате анализа ENV["DATABASE_URL"]. ENV var имеет приоритет над конфигурацией на основе файлов.

Когда вы впервые запускаете приложение pu sh для Rails, Heroku автоматически присоединяет дополнение Postgres и устанавливает ENV["DATABASE_URL"], а ваше приложение волшебным образом подключается к базе данных. .

Даже если вы добавите полные бессмысленные настройки, такие как установка имени базы данных в database.yml, ENV var все равно победит.

Как это может решить нашу войну разработчиков?

Делай противоположное тому, что ты сейчас делаешь. Удалите все, кроме минимума, необходимого для запуска приложения из database.yml и верните его обратно в систему управления версиями.

Разработчики могут использовать direnv или один из множества инструментов, доступных для установите ENV[DATABASE_URL] для настройки параметров, в то время как database.yml следует оставить нетронутым, если вам действительно не нужно настраивать БД.

1 голос
/ 09 марта 2020

Это на самом деле ожидаемое поведение. Для получения дополнительной информации см .: https://devcenter.heroku.com/articles/rails-database-connection-behavior

Что сводится к (для Rails 4.1+):

В то время как информация о соединении по умолчанию будет извлечена из DATABASE_URL любые дополнительные параметры конфигурации в вашем config / database.yml будут объединены.

Heroku всегда будет использовать DATABASE_URL и объединит остальное из database.yml с конфигурацией, содержащейся в этом URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...