我将自动化测试添加到以前没有测试的现有Rails 3项目中,并使用rspec来实现。
我的Rspec配置以:ENV["RAILS_ENV"] ||= 'test'
我的database.yml包含:
test:
adapter: mysql2
encoding: utf8
database: billing_test
username: {{obfuscated}}
password: {{obfuscated}}
host: localhost
pool: 25
port: 3306
当我从rails应用程序的根目录运行rspec .
时,收到以下错误:
/Users/bdx/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.11/lib/active_record/connection_adapters/abstract/connection_specification.rb:47:in `resolve_hash_connection': database configuration does not specify adapter (ActiveRecord::AdapterNotSpecified)
我的开发数据库位于同一台服务器上,除了数据库名称外,其设置相同。已创建数据库并使用RAILS_ENV=test rake db:migrate
在其上运行所有迁移,因此我知道rails正确连接到数据库。
我在这一点上的怀疑是,rspec使用了与我指定的不同的RAILS_ENV
,但我不确定如何调试它。
答案 0 :(得分:0)
你在以下方法的第二行失败了:
def resolve_hash_connection(spec) # :nodoc:
spec = spec.symbolize_keys
raise(AdapterNotSpecified, "database configuration does not specify adapter") unless spec.key?(:adapter)
begin
require "active_record/connection_adapters/#{spec[:adapter]}_adapter"
rescue LoadError => e
raise LoadError, "Please install the #{spec[:adapter]} adapter: `gem install activerecord-#{spec[:adapter]}-adapter` (#{e.message})", e.backtrace
end
adapter_method = "#{spec[:adapter]}_connection"
ConnectionSpecification.new(spec, adapter_method)
end
您可以修改代码以在此时转到调试器或插入print语句以查看spec
的值,该值应该是哈希值。通过查看“那里有什么”,您可以了解您在配置方面所采取的措施。