Я только что обновил свое приложение для производства рельсов с помощью 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.