Приложение Heroku читает файл database.yml - PullRequest
4 голосов
/ 28 марта 2011

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

Например, со следующим

production: 
    adapter: sqlite3 
    database: db/production.sqlite3 
    pool: 5 
    timeout: 5000

, за которым следует db :igration

$:~/Apps/DancingCupid/DancingCupid$ heroku rake --trace db:migrate

выплевывает

rake aborted!
unable to open database file
/app/.bundle/gems/ruby/1.8/gems/activerecord-3.0.5/lib/active_record/connection_adapters/sqlite3_adapter.rb:27:in `initialize' 
...

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

Помимо удаления приложения и создания нового, есть ли способ решить эту проблему?

Ответы [ 5 ]

6 голосов
/ 24 февраля 2013

Heroku определенно переписывает ваш database.yml на push, поэтому не имеет значения, что там находится в управлении исходным кодом.

Для подтверждения сделайте heroku run bash, который подключит вас к сеансу bash в вашем приложении, затем посмотрите на cat config\database.yml, и вы увидите, как они его переписали.

4 голосов
/ 17 сентября 2014

Другие ответы НЕ ИСТИНА больше по состоянию на Rails 4.1 .

config / database.yml больше не будет перезаписываться, когда Rails4.1.0 Приложение RC1 обнаружено.Вместо этого он будет объединен с DATABASE_URL, поэтому в config / database.yml можно установить дополнительные параметры, например размер пула.

Чтобы перепроверить содержимое вашего database.yml на сервере Heroku, вам нужноможет запустить удаленный bash через heroku run bash, а затем cat config/database.yml, чтобы увидеть его содержимое на сервере и сравнить с вашим локальным.

2 голосов
/ 14 апреля 2011

Я не думаю, что вы сумасшедший! (Но я думал, что я был)

Я обошел эту проблему в течение нескольких днейи, наконец, нашел эту статью: http://article.gmane.org/gmane.comp.lang.ruby.rails.heroku/1003/match=database+yml

Это заставило меня поверить, что, возможно, это был вовсе не мой код!

Затем я просто уничтожил свое приложение heroku и создал новое.и подтолкнул к этому.Вдруг все работает отлично!Я не знаю, как, когда и почему, но я думаю, что можно перезаписать или повредить файл database.yml, который создает Heroku.

Надеюсь, это поможет!

1 голос
/ 28 марта 2011

Попробуйте удалить database.yml из контроля версий.Хорошей практикой является создание копии database.yml во что-то вроде database.yml.example и добавление database.yml к вашему .gitignore файлу.

Таким образом, когда вы нажимаете на Heroku, у него не будет никакой конфигурации базы данных.чтобы ссылаться на.

Вы, вероятно, также не хотите, чтобы камень sqlite3 был в производстве.Убедитесь, что он входит в группы разработки / тестирования в вашем Gemfile.

0 голосов
/ 22 февраля 2013

database.yml не следует отправлять в Heroku. Он попытается подключиться к этой базе данных, тайм-аут, а затем сбой.

Добавьте его к своему .gitignore , чтобы оно не попало туда.

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