Рубин на рельсах соединяется с правой базой Postgres - PullRequest
0 голосов
/ 24 мая 2018

Я разработал веб-сайт с использованием RoR + Postgresql, перенес его на Heroku с помощью Git.Все работает хорошо.

Затем я импортировал веб-сайт и базы данных из Heroku обратно на локальный (на другой компьютер).Все тоже прошло хорошо.

Однако теперь у меня есть 4 базы данных локально:

myapp myapp_test myapp_development myapp_production

При локальном тестировании моего приложения выясняется, что онообщение с myapp_development.

Но все мои данные находятся в БД myapp.

Как мне поручить RoR использовать DB myapp?

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

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']по соображениям безопасности и во избежание войн разработчиков.
0 голосов
/ 24 мая 2018

Если я вас правильно понял - могу предложить следующее решение.Вот пример config / database.yml

login: &login
  adapter: postgresql
  encoding: utf8
  host: localhost
  username: user_name
  password: password

development:
  <<: *login
  database: db_name_development

test:
  <<: *login
  database: db_name_test

production:
  <<: *login
  database: db_name_production

Попробуйте заменить:

development:
  <<: *login
  database: db_name_development

на:

development:
  <<: *login
  database: myapp_development

Надеюсьэто поможет вам.

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