2014-12-04 57 views
1

我想要使用rspec的与mongoid,设计,database_cleaner和我有这个错误RSpec的与mongoid,设计,database_cleaner:ActiveRecord的:: ConnectionNotEstablished错误

Failure/Error: Unable to find matching line from backtrace 
ActiveRecord::ConnectionNotEstablished: 
    ActiveRecord::ConnectionNotEstablished 
# /home/adham/.rvm/gems/ruby-2.1.5/gems/activerecord-4.1.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:541:in `retrieve_connection' 
# /home/adham/.rvm/gems/ruby-2.1.5/gems/activerecord-4.1.8/lib/active_record/connection_handling.rb:113:in `retrieve_connection' 
# /home/adham/.rvm/gems/ruby-2.1.5/gems/activerecord-4.1.8/lib/active_record/connection_handling.rb:87:in `connection' 
# /home/adham/.rvm/gems/ruby-2.1.5/gems/activerecord-4.1.8/lib/active_record/fixtures.rb:499:in `create_fixtures' 
# /home/adham/.rvm/gems/ruby-2.1.5/gems/activerecord-4.1.8/lib/active_record/fixtures.rb:984:in `load_fixtures' 
# /home/adham/.rvm/gems/ruby-2.1.5/gems/activerecord-4.1.8/lib/active_record/fixtures.rb:957:in `setup_fixtures' 
# /home/adham/.rvm/gems/ruby-2.1.5/gems/activerecord-4.1.8/lib/active_record/fixtures.rb:806:in `before_setup' 

的Gemfile测试组

group :development, :test do 
    gem "factory_girl_rails", "~> 4.0" 
    gem 'rspec-rails', '~> 3.1.0' 
    gem 'spork', '~> 0.8.5' 
    gem 'mongoid-rspec', '~> 2.0.0.rc1' 
    gem 'capybara' 
    gem 'database_cleaner' 
    gem 'shoulda-matchers' 
end 

和我rails_helper.rb ==

ENV["RAILS_ENV"] ||= 'test' 
require 'spec_helper' 
require File.expand_path("../../config/environment", __FILE__) 
require 'rspec/rails' 
require "mongoid" 
Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f } 

RSpec.configure do |config| 
    config.fixture_path = "#{::Rails.root}/spec/fixtures" 
    config.use_transactional_fixtures = false 
    config.include Mongoid::Matchers 
    config.include FactoryGirl::Syntax::Methods 
    config.infer_spec_type_from_file_location! 
end 

我该怎么办?

+0

什么是你的config/application.rb文件? – 2014-12-05 20:07:06

+0

您是否找到解决此问题的解决方案? – 2015-03-18 15:21:45

回答

6

我有同样的错误。

我安装了宝石,版本:

rails (4.2.0) 
rspec (3.2.0) 
rspec-core (3.2.2) 
rspec-expectations (3.2.0) 
rspec-mocks (3.2.1) 
rspec-rails (3.2.1) 
rspec-support (3.2.2) 
mongoid-rspec (2.2.0) 

我试图从所有模式禁用灯具,包括

RSpec.configure do |config| 
    config.use_transactional_fixtures = false 
end 

并没有什么变化都解决了错误。

经过一番研究,我试图修补rails ActiveRecord来手动禁用fixtures(因为MongoID不支持这个功能)。现在Rspec像魅力一样与MongoID合作!

刚创建的文件规格/支持/ disable_active_record_fixtures.rb与此内容:

module ActiveRecord::TestFixtures 
    def before_setup 
    super 
    end 

    def after_teardown 
    super 
    end 
end 

不要忘了要求rails_helper.rb

这个文件如果正在使用DatabaseCleaner您需要创建此内容的另一个支持文件:

RSpec.configure do |config| 
    config.before(:suite) do 
    DatabaseCleaner[:mongoid].strategy = :truncation 
    end 

    config.before(:each) do 
    DatabaseCleaner[:mongoid].start 
    end 

    config.after(:each) do 
    DatabaseCleaner[:mongoid].clean 
    end 
end 
+0

这个解决方案对我来说非常出色。出现问题时,我从Rails 4.0升级到了Rails 4.1。谢谢。 – dandrews 2017-01-10 02:46:08