ruby on rails rspec error - PullRequest
       0

ruby on rails rspec error

3 голосов
/ 22 октября 2011

Я изучаю книгу "Учим Rails на примере" и пытаюсь запустить тесты. По какой-то причине я не могу заставить rspec работать должным образом.

Если я запускаю команду rspec spec/ по его указанию, я получаю следующую ошибку:

$ rspec spec/
/home/desktop/.rvm/gems/ruby-1.9.2-p136/gems/bundler-1.0.21/lib/bundler/runtime.rb:31:in `block in setup': 
You have already activated rspec-core 2.7.1, but your Gemfile requires rspec-core 2.6.4. 
Using bundle exec may solve this. (Gem::LoadError)

Странно то, что мой Gemfile не указывает версию--

group :development do
  gem 'rspec-rails'
end

group :test do
  gem 'rspec'
  gem 'webrat'
end

Если я последую совету из сообщения об ошибке и использую bundle exec rspec spec/, то первые два теста пройдут - но новая страница «о», которую мы создали в учебном пособии, завершится неудачно со следующей ошибкой, хотя, насколько я могу, скажите, что страница, которую я построил (и действия контроллера и т. д.), точно такой, какой она должна быть:

Failures:

  1) PagesController GET 'about' should be successful
     Failure/Error: response.should_be_success
     NoMethodError:
       undefined method `should_be_success' for #<ActionController::TestResponse:0x00000003539438>
     # ./spec/controllers/pages_controller_spec.rb:23:in `block (3 levels) in <top (required)>'

Finished in 0.10861 seconds
3 examples, 1 failure

Failed examples:

rspec ./spec/controllers/pages_controller_spec.rb:21 # PagesController GET 'about' should be successful

Я довольно опытный программист, но я столкнулся с бесконечными проблемами с конфликтующими версиями гемов и сотнями разных способов выполнить все различные задачи с использованием Rails (например, "использовать RVM", "не использовать RVM" , "устанавливать драгоценные камни, используя sudo", "не устанавливать драгоценные камни, используя sudo" и т. д.)

Мой компьютер работает под управлением Ubuntu Linux.

Спасибо за любую помощь - пожалуйста, объясните, если вы хотите, что я делаю не так на языке Ruby Noob!

1 Ответ

6 голосов
/ 22 октября 2011

Запуск bundle exec правильный и необходим, потому что у вас установлена ​​более новая версия этого гема, которая загружается вместо той, которая указана в вашем Gemfile.lock. Использование bundle exec переопределяет путь загрузки, вызывая загрузку только драгоценных камней, указанных в вашем Gemfile.lock. (Вам может пригодиться псевдоним bundle exec для чего-то более короткого.)

Ответ на вторую проблему правильный в сообщениях об ошибках:

undefined method `should_be_success'

должно быть should be_success.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...