2014-12-04 2 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? –

+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 

И ничего решить эту ошибку.

После некоторых исследований я попытался исправить рельсы ActiveRecord, чтобы вручную отключить светильники (поскольку 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

Смежные вопросы