2014-12-04 1 views
1

내가, database_cleaner을 mongoid와 RSpec에를 사용 고안하기 위해 노력하고있어 그리고 난이 오류RSpec에 : 액티브 :: 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 파일? –

+0

이 문제에 대한 해결책을 찾았습니까? –

답변

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 

그리고 아무것도의 모든 차이를 포함하여 그 오류를 해결한다.

일부 연구를 한 후 MongoID가이 기능을 지원하지 않기 때문에 수동으로 조명기를 비활성화하기 위해 레일스 ActiveRecord를 패치하려고했습니다. 이제 Rspec은 MongoID와 같이 매력적으로 작동합니다!

그냥이 내용으로 파일 사양/지원/disable_active_record_fixtures.rb을 만듭니다

module ActiveRecord::TestFixtures 
    def before_setup 
    super 
    end 

    def after_teardown 
    super 
    end 
end 

당신이 DatabaseCleaner를 사용하는 경우 rails_helper.rb

에서이 파일을 필요로하는 것을 잊지 마세요 다음 내용으로 다른 지원 파일을 만들어야합니다.

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.1에서 Rails 4.0으로 업그레이드했습니다. 감사. – dandrews