2015-01-02 2 views
4

rspec 3.0에서 루비 2.0을 가졌습니다. 모든 rspec 3.0 gem을 제거하고 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' 

좋아요, 수정되었습니다. 난 그냥 모든 문제를 나 3.0 RSpec에 준 고정 gem install rspec를 사용하여

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

그럼, 난 그냥 다시 설치 RSpec을 사용하여 모든 불필요한 보석을 제거

. 그러나, 나는 비추천 경고를 다시 얻는다.

오류가 발생한 이유를 알려주십시오. 자습서 작성자는 rspec 2.10.0 이상에서 작동해야한다고 말했습니다.

답변

1

자습서 작성자는 rspec 2.10.0 이상에서 작동해야한다고 말했습니다.

가능성이 2.x 범위 내에서 2.10 이상을 의미했습니다. 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

관련 문제