为什么我的 rails 应用会引发 "database configuration does not specify adapter (ActiveRecord::AdapterNotSpecified)" 错误?
Why does my rails app raise a "database configuration does not specify adapter (ActiveRecord::AdapterNotSpecified)" error?
我刚刚在 ruby 2.2 的新 gem 集中使用 Capistrano 更新了我的生产 rails 应用程序,我收到以下错误:
/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)
这是我的 database.yml :
production:
host: localhost
port: xxxx
adapter: postgresql
encoding: utf8
database: odpf
pool: 5
username: xxxxxx
password: xxxxxx
我不明白为什么我会收到这个错误,因为我的 database.yml 在 capisrano 更新前后都没有改变。
所有gem都存入/var/www/odpf/shared/bundle/ruby/2.2.0/gems.
如果我 运行 a bundle exec gem list
存在 postgresql 的 pg gem
我的数据库正在运行,因为我可以使用 database.yml 的用户从 psql 连接到它:\c odpf xxxxxx 127.0.0.1 xxxx
所以我不明白出了什么问题。
这也是我 运行 a 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 中,错误消息确实发生了变化。看来 rails 相信他处于测试模式:
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 更新之前它工作正常。
事实上一切都是正确的。
关于rails控制台,它总是在开发模式下执行,除非你特别要求生产参数。
关于我的问题,我不得不停止 postgresql,停止 apache2,并修改我的 .gitignore
文件以再次跟踪 tmp/restart.txt 文件并使其再次成为我的存储库的一部分(通过复制它,删除旧的,git add -A
, git push ...
).
然后重新启动postgresql和apache2。
抱歉这个问题。
我刚刚在 ruby 2.2 的新 gem 集中使用 Capistrano 更新了我的生产 rails 应用程序,我收到以下错误:
/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)
这是我的 database.yml :
production:
host: localhost
port: xxxx
adapter: postgresql
encoding: utf8
database: odpf
pool: 5
username: xxxxxx
password: xxxxxx
我不明白为什么我会收到这个错误,因为我的 database.yml 在 capisrano 更新前后都没有改变。
所有gem都存入/var/www/odpf/shared/bundle/ruby/2.2.0/gems.
如果我 运行 a bundle exec gem list
我的数据库正在运行,因为我可以使用 database.yml 的用户从 psql 连接到它:\c odpf xxxxxx 127.0.0.1 xxxx
所以我不明白出了什么问题。
这也是我 运行 a 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 中,错误消息确实发生了变化。看来 rails 相信他处于测试模式:
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 更新之前它工作正常。
事实上一切都是正确的。
关于rails控制台,它总是在开发模式下执行,除非你特别要求生产参数。
关于我的问题,我不得不停止 postgresql,停止 apache2,并修改我的 .gitignore
文件以再次跟踪 tmp/restart.txt 文件并使其再次成为我的存储库的一部分(通过复制它,删除旧的,git add -A
, git push ...
).
然后重新启动postgresql和apache2。
抱歉这个问题。