【问题标题】:Rails 4.1.0 and Rspec not working when no ActiveRecord没有 ActiveRecord 时 Rails 4.1.0 和 Rspec 不工作
【发布时间】:2014-08-03 13:08:46
【问题描述】:

我目前有一个没有使用 ActiveRecord 的 ruby​​ on rails 项目。在 rails 4.0.8 上它工作正常,当我升级到 rails 4.1.4 时它失败并显示 ActiveRecord::ConnectionNotEstablished。我不知道如何在尝试连接到活动记录时禁用它。

我在规范文件中设置了config.use_transactional_fixtures = false

在我的 config/application.rb 文件中

# Pick the frameworks you want:                                                    
# require "active_record/railtie"                                                  
require 'action_controller/railtie'                                                
require 'action_mailer/railtie'                                                    
require 'sprockets/railtie'                                                        
# require "rails/test_unit/railtie" 

具有以下内容的项目:

ruby 2.1.2
rails 4.0.8
rspec-rails 3.0.2

这是我得到的堆栈跟踪:

 Failure/Error: Unable to find matching line from backtrace
 ActiveRecord::ConnectionNotEstablished:
   ActiveRecord::ConnectionNotEstablished
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/activerecord-4.1.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:541:in `retrieve_connection'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/activerecord-4.1.4/lib/active_record/connection_handling.rb:113:in `retrieve_connection'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/activerecord-4.1.4/lib/active_record/connection_handling.rb:87:in `connection'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/activerecord-4.1.4/lib/active_record/fixtures.rb:499:in `create_fixtures'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/activerecord-4.1.4/lib/active_record/fixtures.rb:984:in `load_fixtures'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/activerecord-4.1.4/lib/active_record/fixtures.rb:957:in `setup_fixtures'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/activerecord-4.1.4/lib/active_record/fixtures.rb:806:in `before_setup'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/rspec-rails-3.0.2/lib/rspec/rails/adapters.rb:71:in `block (2 levels) in <module:MinitestLifecycleAdapter>'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/rspec-core-3.0.3/lib/rspec/core/example.rb:294:in `instance_exec'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/rspec-core-3.0.3/lib/rspec/core/example.rb:294:in `instance_exec'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/rspec-core-3.0.3/lib/rspec/core/hooks.rb:430:in `block (2 levels) in run'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/rspec-core-3.0.3/lib/rspec/core/example.rb:210:in `call'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/rspec-core-3.0.3/lib/rspec/core/example.rb:210:in `block (2 levels) in <class:Procsy>'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/rspec-core-3.0.3/lib/rspec/core/hooks.rb:432:in `run'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/rspec-core-3.0.3/lib/rspec/core/hooks.rb:485:in `run'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/rspec-core-3.0.3/lib/rspec/core/example.rb:303:in `with_around_example_hooks'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/rspec-core-3.0.3/lib/rspec/core/example.rb:145:in `run'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/rspec-core-3.0.3/lib/rspec/core/example_group.rb:494:in `block in run_examples'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/rspec-core-3.0.3/lib/rspec/core/example_group.rb:490:in `map'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/rspec-core-3.0.3/lib/rspec/core/example_group.rb:490:in `run_examples'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/rspec-core-3.0.3/lib/rspec/core/example_group.rb:457:in `run'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/rspec-core-3.0.3/lib/rspec/core/example_group.rb:458:in `block in run'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/rspec-core-3.0.3/lib/rspec/core/example_group.rb:458:in `map'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/rspec-core-3.0.3/lib/rspec/core/example_group.rb:458:in `run'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/rspec-core-3.0.3/lib/rspec/core/example_group.rb:458:in `block in run'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/rspec-core-3.0.3/lib/rspec/core/example_group.rb:458:in `map'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/rspec-core-3.0.3/lib/rspec/core/example_group.rb:458:in `run'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/rspec-core-3.0.3/lib/rspec/core/runner.rb:112:in `block (2 levels) in run_specs'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/rspec-core-3.0.3/lib/rspec/core/runner.rb:112:in `map'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/rspec-core-3.0.3/lib/rspec/core/runner.rb:112:in `block in run_specs'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/rspec-core-3.0.3/lib/rspec/core/reporter.rb:54:in `report'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/rspec-core-3.0.3/lib/rspec/core/runner.rb:108:in `run_specs'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/rspec-core-3.0.3/lib/rspec/core/runner.rb:86:in `run'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/rspec-core-3.0.3/lib/rspec/core/runner.rb:70:in `run'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/rspec-core-3.0.3/lib/rspec/core/runner.rb:38:in `invoke'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/gems/rspec-core-3.0.3/exe/rspec:4:in `<top (required)>'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/bin/rspec:23:in `load'
 # /home/owen/workspace/cms/vendor/bundle/ruby/2.1.0/bin/rspec:23:in `<main>'

我的 spec/spec_helper.rb 是默认的空白,有很多 cmets,我的 rspec 助手如下:

if ENV['COVERAGE']
  require 'simplecov'
  require 'simplecov-console'
  require 'coveralls'

  SimpleCov.minimum_coverage 100

  SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
    SimpleCov::Formatter::HTMLFormatter,
    SimpleCov::Formatter::Console,
    Coveralls::SimpleCov::Formatter,
  ]

  SimpleCov.start 'rails'
end

ENV["RAILS_ENV"] ||= 'test'
require 'rails_helper'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'shoulda/matchers'

Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }

RSpec.configure do |config|
  config.infer_spec_type_from_file_location!

  config.before :all do
    CouchPotato.couchrest_database.create!
  end

  config.before do
    if CouchPotato.couchrest_database.info['update_seq'] > 0
      CouchPotato.couchrest_database.recreate!
    end
  end
end

有人有什么建议吗?谢谢。

【问题讨论】:

  • 您的测试似乎正在使用需要 activerecord 的夹具。你能说出你的rails_helper/spec_helper吗?
  • 请显示database.yml

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


【解决方案1】:

这似乎是 rspec-rails https://github.com/rspec/rspec-rails/pull/1141 的问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 2018-03-08
    • 2013-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多