spork 0.9.2和rspec 3.0.0 =未初始化的常量RSpec :: Core :: CommandLine(NameError)

lx0*_*0st 21 ruby rspec ruby-on-rails spork

我使用spork 0.9.2和rspec 3.0.0.在尝试运行测试时,rspec --drb我有一个例外

C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/spork-0.9.2/lib/spork/test_framework/rspec.rb:11:in run_tests: uninitialized constant RSpec::Core::CommandLine (NameError)

但是当将rspec版本改回2.6时 - 一切都还可以.有没有人遇到同样的问题?可以解决吗?

lx0*_*0st 33

原因是在Rspec3中删除了RSpec :: Core :: CommandLine

https://github.com/rspec/rspec-core/blob/master/Changelog.md

将RSpec :: Core :: CommandLine(从未正式声明为公共)合并到RSpec :: Core :: Runner中.(迈伦马斯顿)

但是spork取决于这个代码.

spork的github上已经存在一个问题,可以在后面的spork的fork中找到解决方案:

https://github.com/codecarson/spork/commit/38c79dcedb246daacbadb9f18d09f50cc837de51#diff-937afaa19ccfee172d722a05112a7c6fL6

一般来说 - 更换

::RSpec::Core::CommandLine.new(argv).run(stderr, stdout)
Run Code Online (Sandbox Code Playgroud)

::RSpec::Core::Runner.run(argv,stderr, stdout)
Run Code Online (Sandbox Code Playgroud)

在soprks源代码中

  • 实际上他们(Spork)已经把它合并到了主人身上 (2认同)

Ben*_*Ben 12

喜欢@ lx00st说:

原因是在Rspec3中删除了RSpec :: Core :: CommandLine

spork gem尚未在rubygems.org中更新.但是,修复程序已合并到spith的github主分支上.你可以通过告诉bundler你想从github(master)而不是rubygems.org获取spork来获取它.这样做:

这已在spork的主分支上修复.简单方案:

gem 'spork', github: 'sporkrb/spork', branch: 'master'
Run Code Online (Sandbox Code Playgroud)

如果您正在使用spork-rails,只需要通过github spork,然后再在gemfile中使用spork-rails.有关这方面的更多信息,请参阅我的评论:

https://github.com/sporkrb/spork-rails/issues/26

编辑:已添加 branch: 'master'