当试图运行rspec时,我得到“未初始化的常量ActiveModel”

当我运行rspec spec我得到以下内容:

 /usr/local/lib/ruby/gems/1.9.1/gems/rspec-rails-2.7.0/lib/rspec/rails/extensions/active_record/base.rb:26:in`':ininitialized constant ActiveModel(NameError )
    来自/usr/local/lib/ruby/gems/1.9.1/gems/rspec-rails-2.7.0/lib/rspec/rails/extensions.rb:1:in`requiren'
    来自/usr/local/lib/ruby/gems/1.9.1/gems/rspec-rails-2.7.0/lib/rspec/rails/extensions.rb:1:in`
    来自/usr/local/lib/ruby/gems/1.9.1/gems/rspec-rails-2.7.0/lib/rspec/rails.rb:8:in,requirement
    来自/usr/local/lib/ruby/gems/1.9.1/gems/rspec-rails-2.7.0/lib/rspec/rails.rb:8:in`
    来自/Users/noahc/Dropbox/perfect_setup/spec/spec_helper.rb:4:in`requirement'
    来自/Users/noahc/Dropbox/perfect_setup/spec/spec_helper.rb:4:in`'
    来自/Users/noahc/Dropbox/perfect_setup/spec/controllers/pages_controller_spec.rb:1:in`requirent'
    来自/Users/noahc/Dropbox/perfect_setup/spec/controllers/pages_controller_spec.rb:1:in`
    来自/usr/local/lib/ruby/gems/1.9.1/gems/rspec-core-2.7.1/lib/rspec/core/configuration.rb:459:in"load'
    来自/usr/local/lib/ruby/gems/1.9.1/gems/rspec-core-2.7.1/lib/rspec/core/configuration.rb:459:in"load_spec_files中的块'
    来自/usr/local/lib/ruby/gems/1.9.1/gems/rspec-core-2.7.1/lib/rspec/core/configuration.rb:459:in`map'
    来自/usr/local/lib/ruby/gems/1.9.1/gems/rspec-core-2.7.1/lib/rspec/core/configuration.rb:459:in,load_spec_files'
    来自/usr/local/lib/ruby/gems/1.9.1/gems/rspec-core-2.7.1/lib/rspec/core/command_line.rb:18:in“run”
    来自/usr/local/lib/ruby/gems/1.9.1/gems/rspec-core-2.7.1/lib/rspec/core/runner.rb:80:in“run_in_process”
    来自/usr/local/lib/ruby/gems/1.9.1/gems/rspec-core-2.7.1/lib/rspec/core/runner.rb:69:in“run”
    来自/usr/local/lib/ruby/gems/1.9.1/gems/rspec-core-2.7.1/lib/rspec/core/runner.rb:10:in,clock in autorun'

我的spec_helper.rb看起来像这样:

 ENV["RAILS_ENV"] ||= 'test' require 'spec_helper' require 'rspec/rails' require 'rspec/autorun' require 'spork' Spork.prefork do ENV['RAILS_ENV'] ||= 'test' require File.expand_path('../../config/environment', __FILE__) require 'rspec/rails' RSpec.configure do |config| config.mock_with :rspec config.fixture_path = "#{Rails.root}/spec/fixtures" config.use_transactional_fixtures = true ActiveSupport::Dependencies.clear end end Spork.each_run do load "#{Rails.root}/config/routes.rb" Dir["#{Rails.root}/app/**/*.rb"].each {|f| load f} end Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f} RSpec.configure do |config| config.mock_with :rspec config.fixture_path = "#{::Rails.root}/spec/fixtures" config.use_transactional_fixtures = true config.infer_base_class_for_anonymous_controllers = false end Dir[Rails.root.join('spec/support/**/*.rb')].each{|f| require f} 

如果我删除了我的pages_controller_spec文件,错误就会消失。 但我没有规格可以运行。

当我有一个像这样简单的东西时,错误会返回:

 require 'spec_helper' describe PagesController do it "should do something..." end 

此外,如果我添加任何测试,无论我在哪里得到相同的错误。

有关其他事情的任何线索,我可以试试吗?

你为什么要运行rspec spec ? 典型的运行方式是rake spec

尝试bundle exec rspec specbundle exec rake spec

如果这不起作用,请尝试查看环境的其余部分是否有问题 – 尝试bundle exec rails consolebundle exec rails server

要检查的另一件事是,项目文件中的.rspec有什么奇怪的东西,或〜/ .rspec

在调试相同症状时发现此线程。 这是错误的另一个原因:我跑了

 rspec --init 

但未能跑

 rails generate rspec:install 

做后者解决了这个问题。

在我的情况下

  gem "spork-rails", "~> 4.0.0" 

./Gemfile中丢失了。