ActiveRecord соединение требует сброса? - PullRequest
0 голосов
/ 27 января 2020

Приложение в производственном режиме возвращает содержимое, как и ожидалось. Предполагается, что он подключается к настроенной базе данных. Файл database.yml выглядит следующим образом:

default: &default
  adapter: postgresql
  user: deploy
  password: 888xxx888xxx
  schema_search_path: public
  # For details on connection pooling, see rails configuration guide
  # http://guides.rubyonrails.org/configuring.html#database-pooling
  pool: 5
  timeout: 10000

development:
  <<: *default
  database: fort_development

  <<: *default
  database: fort_test

production:
  <<: *default
  database: fort_production

Однако при подключении к базе данных через консоль, будь то в разработке (где db не существует) или в производстве, консоль подключается к неправильной база данных. Он также ссылается на имя пользователя, которое было удалено из файла database.yml (и приложение впоследствии перезапущено).

примечание: однажды на строку myapp в файле yml была указана ссылка для schema_search_path атрибут, однако это была закомментированная строка (Нет уверенности в том, была ли она когда-либо активирована. '

> bundle exec rails c
irb(main):001:0> ActiveRecord::Base.connection_config
=> {:adapter=>"postgresql", :user=>"deploy", :password=>"888xxx888xxx", :schema_search_path=>"public", :pool=>5, :timeout=>10000, :database=>"myapp", :username=>"deploy", :host=>"127.0.0.1"}
> bundle exec rails c production
irb(main):001:0> ActiveRecord::Base.connection_config
=> {:adapter=>"postgresql", :user=>"deploy", :password=>"888xxx888xxx", :schema_search_path=>"public", :pool=>5, :timeout=>10000, :database=>"myapp", :username=>"deploy", :host=>"127.0.0.1"}

Консоль и приложение не синхронизированы. Что может сделать консоль работает с разными значениями и как ее можно сбросить для работы с правильными данными конфигурации?

1 Ответ

0 голосов
/ 06 февраля 2020

Для любого, кто сталкивается с этим, есть другое место, где rake может получить инструкции для подключения через ActiveRecord.

.rbenv-vars

Этот файл в каталоге для приложения был ошибочно установлен как:

DATABASE_URL=postgresql://deploy:PASSWORD@127.0.0.1/myapp

Еще один потенциальный источник проблем (неясно, почему файлы правильно анализируются в yaml) - это файл database.yml, ссылающийся только на производственную среду

production:
  adapter: postgresql
  database: fort_production
  password: [...]
  pool: 5
  schema_search_path: public
  timeout: 10000
  user: deploy
...