rspec将无法运行 - “数据库配置未指定适配器”

时间:2013-11-25 20:44:17

标签: ruby-on-rails-3 rspec rspec-rails

我将自动化测试添加到以前没有测试的现有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,但我不确定如何调试它。

1 个答案:

答案 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的值,该值应该是哈希值。通过查看“那里有什么”,您可以了解您在配置方面所采取的措施。