При попытке запустить rspec я получаю "неинициализированную константу ActiveModel" - PullRequest
0 голосов
/ 08 ноября 2011

Когда я запускаю 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 `': uninitialized constant ActiveModel (NameError)
    from /usr/local/lib/ruby/gems/1.9.1/gems/rspec-rails-2.7.0/lib/rspec/rails/extensions.rb:1:in `require'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rspec-rails-2.7.0/lib/rspec/rails/extensions.rb:1:in `'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rspec-rails-2.7.0/lib/rspec/rails.rb:8:in `require'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rspec-rails-2.7.0/lib/rspec/rails.rb:8:in `'
    from /Users/noahc/Dropbox/perfect_setup/spec/spec_helper.rb:4:in `require'
    from /Users/noahc/Dropbox/perfect_setup/spec/spec_helper.rb:4:in `'
    from /Users/noahc/Dropbox/perfect_setup/spec/controllers/pages_controller_spec.rb:1:in `require'
    from /Users/noahc/Dropbox/perfect_setup/spec/controllers/pages_controller_spec.rb:1:in `'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rspec-core-2.7.1/lib/rspec/core/configuration.rb:459:in `load'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rspec-core-2.7.1/lib/rspec/core/configuration.rb:459:in `block in load_spec_files'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rspec-core-2.7.1/lib/rspec/core/configuration.rb:459:in `map'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rspec-core-2.7.1/lib/rspec/core/configuration.rb:459:in `load_spec_files'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rspec-core-2.7.1/lib/rspec/core/command_line.rb:18:in `run'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rspec-core-2.7.1/lib/rspec/core/runner.rb:80:in `run_in_process'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rspec-core-2.7.1/lib/rspec/core/runner.rb:69:in `run'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rspec-core-2.7.1/lib/rspec/core/runner.rb:10:in `block 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

Кроме того, если я добавлю какие-либо тесты, независимо от того, где я получу ту же ошибку.

Какие-нибудь подсказки о других вещах, которые я могу попробовать?

Ответы [ 3 ]

4 голосов
/ 09 ноября 2011

Почему ты бежишь rspec spec? Типичная вещь для запуска - rake spec.

Попробуйте bundle exec rspec spec или bundle exec rake spec.

Если это не сработает, попробуйте выяснить, что не так с остальной средой - попробуйте bundle exec rails console и bundle exec rails server

Еще одна вещь, которую нужно проверить, есть ли что-то странное в .rspec в файле проекта или ~ / .rspec ?

3 голосов
/ 06 апреля 2013

Нашел эту ветку при отладке тех же симптомов.Вот еще одна причина ошибки: я запустил

rspec --init

, но не смог запустить

rails generate rspec:install

Выполнение последней позволило устранить проблему.

2 голосов
/ 13 января 2014

В моем случае

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

отсутствовало в ./Gemfile.

...