2015-01-02 2 views
4

У меня был ruby ​​2.0 с rspec 3.0. Я удалил все rspec 3.0 gems и заменил их на 2.0. Я сделал это, чтобы избавиться от предупреждений об устаревании. Теперь мои спецификации не работают. Я получаю ошибку ниже. Что говорит об ошибке и как я могу ее исправить? Ни один из сообщений переполнения стека в этом не был полезен.Не удается запустить rspec больше

/zombie/spec/spec_helper.rb:29:in `block (2 levels) in <top (required)>': undefined method `include_chain_clauses_in_custom_matcher_descriptions=' for #<RSpec::Matchers::Configuration:0x00000001a73928> (NoMethodError) 
    from /home/lsusr/.rvm/gems/ruby-2.0.0-p598/gems/rspec-core-2.11.1/lib/rspec/core/configuration.rb:398:in `expect_with' 
    from /home/lsusr/Code/Rspec/zombie/spec/spec_helper.rb:21:in `block in <top (required)>' 
    from /home/lsusr/.rvm/gems/ruby-2.0.0-p598/gems/rspec-core-2.11.1/lib/rspec/core.rb:92:in `configure' 
    from /home/lsusr/Code/Rspec/zombie/spec/spec_helper.rb:17:in `<top (required)>' 
    from /home/lsusr/.rvm/rubies/ruby-2.0.0-p598/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:54:in `require' 
    from /home/lsusr/.rvm/rubies/ruby-2.0.0-p598/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:54:in `require' 
    from /home/lsusr/.rvm/gems/ruby-2.0.0-p598/gems/rspec-core-2.11.1/lib/rspec/core/configuration.rb:434:in `block in requires=' 
    from /home/lsusr/.rvm/gems/ruby-2.0.0-p598/gems/rspec-core-2.11.1/lib/rspec/core/configuration.rb:434:in `map' 
    from /home/lsusr/.rvm/gems/ruby-2.0.0-p598/gems/rspec-core-2.11.1/lib/rspec/core/configuration.rb:434:in `requires=' 
    from /home/lsusr/.rvm/gems/ruby-2.0.0-p598/gems/rspec-core-2.11.1/lib/rspec/core/configuration_options.rb:20:in `block in configure' 
    from /home/lsusr/.rvm/gems/ruby-2.0.0-p598/gems/rspec-core-2.11.1/lib/rspec/core/configuration_options.rb:19:in `each' 
    from /home/lsusr/.rvm/gems/ruby-2.0.0-p598/gems/rspec-core-2.11.1/lib/rspec/core/configuration_options.rb:19:in `configure' 
    from /home/lsusr/.rvm/gems/ruby-2.0.0-p598/gems/rspec-core-2.11.1/lib/rspec/core/command_line.rb:21:in `run' 
    from /home/lsusr/.rvm/gems/ruby-2.0.0-p598/gems/rspec-core-2.11.1/lib/rspec/core/runner.rb:69:in `run' 
    from /home/lsusr/.rvm/gems/ruby-2.0.0-p598/gems/rspec-core-2.11.1/lib/rspec/core/runner.rb:8:in `block in autorun' 

Хорошо, я нашел исправление.

я просто удалил все ненужные драгоценные камни, используя

for i in `gem list --no-versions`; do gem uninstall -aIx $i; done 

Тогда я просто переустановить RSpec с помощью gem install rspec, который дал мне RSpec 3.0 и исправлены все проблемы. Но я снова получаю предупреждения об устаревании.

Пожалуйста, сообщите мне, почему произошла ошибка. Автор учебника сказал, что он должен работать с rspec 2.10.0 или выше.

ответ

1

Учебник автор сказал, что он должен работать с rspec 2.10.0 или выше.

Вероятно, автор имел значение 2.10 или выше, в пределах диапазона 2.x. RSpec 3.x имеет нарушения.

Попробуйте удалить драгоценные камни, как вы делали раньше, то это:

gem install rspec '>=2.10', '<3' 

Затем запустите ваш код.

Предупреждения об устаревании, которые случаются при использовании RSpec 3, не являются плохими; они инструктируют вас сказать, что методы RSpec, которые вы вызываете, будут постепенно отменены. Эти виды предупреждений являются типичными и точными при перемещении всего номера версии, например. 2.x до 3.x.

Ошибки, возникающие при использовании RSpec 2.0, объясняются тем, что это очень старая версия, а метод, который вы вызываете, не существует в версии 2.0. Вероятно, поэтому автор учебника сказал, что использует 2.10 или выше.

Скорее всего, учебник устарел, поэтому лучшим решением является написание учебника и его/ее знать, чтобы обновить его.

Если вам интересно, как RSpec выполняет свои номера версий, вот ссылка на Semantic Versioning.

+0

Спасибо. Но как узнать, почему происходит ошибка? Я только догадывался, что изменение версий драгоценных камней поможет, но у меня не было твердых оснований для этого. – stack1

+0

Я добавил больше информации для вас, чтобы объяснить, почему происходит ошибка. – joelparkerhenderson

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