Переключил мою базу данных Rails на PostGreSQL для Heroku, и теперь приложение вообще не может получить доступ к БД - PullRequest
1 голос
/ 07 января 2020

Я действительно в тупик на этом. Я пробовал так много вещей.

Мне пришлось переключиться с SQLite3 на PostGreSQL, чтобы я мог развернуть на Heroku. Все работало нормально, когда я запускал его локально. Есть одна ошибка, которая возникает после того, как я git pu sh heroku master. Он начинает развертываться, и я получаю это:

Rails couldn't infer whether you are using multiple databases from your database.yml and can't generate the tasks for the non-primary databases. If you'd like to use this feature, please simplify your ERB.

Что также происходит, когда я запускаю heroku rake, за исключением того, что за этим следует:

rake aborted! Psych::BadAlias: Cannot load database configuration: Unknown alias: default

с последующей трассировкой стека.

Полагаю, я что-то напортачил по пути. Я просто не знаю, что он ожидает, или где я должен искать. Мой database.yml выглядит так:

production: adapter: postgresql encoding: utf8 pool: 15 <<: *default url: *db url from heroku* timeout: 5000

Любая помощь с благодарностью. Я новичок во всем этом. Я пытался сбросить и сбросить БД. Последнее доказательство, которое я могу предоставить, - это журнал Heroku:

heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=ohmydog.herokuapp.com request_id=6217a180-f9ef-43da-8bb0-fc5d064e11fb fwd="185.232.22.206" dyno= connect= service= status=503 bytes= protocol=https

1 Ответ

0 голосов
/ 07 января 2020

На самом деле вам нужно сделать почти без конфигурации, чтобы заставить Postgres работать на Heroku, поскольку она обеспечивает почти всю конфигурацию через ENV ["DATABASE_URL"] , которая автоматически объединяется с (и принимает приоритет над настройками database.yml.

default: &default
  adapter: postgresql
  encoding: unicode
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 15 } %>

development:
  <<: *default
  database: my_app_development

test:
  <<: *default
  database: my_app_test

production:
  <<: *default

Это фактически полностью функционирующая конфигурация для Postgres.app локально и Heroku. Я бы действительно оставил почти все по умолчанию и только настраивал DB при необходимости. Предпочитайте использовать ENV["DATABASE_URL"] локально, а также для установки таких вещей, как пароли и имена пользователей, поскольку это позволяет избежать войн разработчиков.

...