Почему мое приложение rails вызывает ошибку конфигурации базы данных, не указывающую адаптер (ActiveRecord::AdapterNotSpecified)?

Я только что обновил свое приложение для производства рельсов с помощью Capistrano в новом наборе драгоценных камней для ruby ​​​​2.2 и получил следующую ошибку:

/var/www/odpf/shared/bundle/ruby/2.2.0/gems/activerecord-3.2.21/lib/active_record/connection_adapters/abstract/connection_specification.rb:47:in `resolve_hash_connection': database configuration does not specify adapter (ActiveRecord::AdapterNotSpecified)

Это моя база данных.yml:

production:
  host: localhost
  port: xxxx
  adapter: postgresql
  encoding: utf8
  database: odpf
  pool: 5
  username: xxxxxx
  password: xxxxxx

Я не понимаю, почему я получил эту ошибку, поскольку мой файл database.yml не изменился ни до, ни после обновления capisrano.

Все гемы хранятся в /var/www/odpf/shared/bundle/ruby/2.2.0/gems.

Драгоценный камень pg для postgresql присутствует, если я запускаю bundle exec gem list

Моя база данных работает, так как я могу подключиться к ней из psql с пользователем database.yml: \c odpf xxxxxx 127.0.0.1 xxxx

Поэтому я не понимаю, что происходит.

Это также выдержка из более крупной ошибки трассировки, когда я запускаю bundle exec rails c :

/var/www/odpf/current$ bundle exec rails c
/var/www/odpf/shared/bundle/ruby/2.2.0/gems/activesupport-3.2.21/lib/active_support/values/time_zone.rb:270: warning: circular argument reference - now
/var/www/odpf/shared/bundle/ruby/2.2.0/gems/activerecord-3.2.21/lib/active_record/connection_adapters/abstract/connection_specification.rb:47:in `resolve_hash_connection': database configuration does not specify adapter (ActiveRecord::AdapterNotSpecified)
    from /var/www/odpf/shared/bundle/ruby/2.2.0/gems/activerecord-3.2.21/lib/active_record/connection_adapters/abstract/connection_specification.rb:41:in `resolve_string_connection'

Речь идет о циклической ссылке в ActiveSupport, может быть, это помогает решить эту проблему?

=== ОБНОВЛЕНИЕ ===

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

bundle exec rails c

/var/www/odpf/shared/bundle/ruby/2.2.0/gems/activesupport-3.2.21/lib/active_support/values/time_zone.rb:270: warning: circular argument reference - now
/var/www/odpf/shared/bundle/ruby/2.2.0/gems/activesupport-3.2.21/lib/active_support/dependencies.rb:251:in `require': cannot load such file -- test/unit/testcase (LoadError)

Я не могу понять, почему это происходит, хотя? Потому что у меня есть строка RailsEnv production на моем виртуальном хосте, и она работала нормально до обновления capistrano.


person Douglas    schedule 17.02.2015    source источник


Ответы (1)


На самом деле все было правильно.

Что касается консоли rails, она всегда выполняется в режиме разработки, если вы специально не запрашиваете производственный параметр.

Что касается моей проблемы, мне пришлось остановить postgresql, остановить apache2 и изменить файл .gitignore, чтобы снова отслеживать файл tmp/restart.txt и снова сделать его частью моего репозитория (скопировав его, удалив старый, git add -A, git push ...) .

Затем снова запустите postgresql и apache2.

Извините за вопрос.

person Douglas    schedule 24.02.2015