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

我使用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时 – 一切都还可以。 有人遇到过同样的问题吗? 可以解决吗?

原因是在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) 

 ::RSpec::Core::Runner.run(argv,stderr, stdout) 

在soprks源代码中

喜欢@ 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' 

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

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

编辑:添加branch: 'master'

这里也是一样的。 只需从.spec文件中删除“–drb”行,然后删除cli: '--drb'guard :rspec...行上的cli: '--drb'参数。 这不会关闭spork。 它只是关闭“分布式ruby”(–drb)Rspec选项。 因为后卫知道你正在通过Spork运行Rspec,所以不需要它。

我开始使用Spring而不是Spork,这解决了它。

它似乎是新的Rails方式: http : //edgeguides.rubyonrails.org/4_1_release_notes.html#spring-application-preloader

我有同样的问题。 无法深入研究rspec3源代码,从我的.rspec文件中删除–drb行为我解决了问题。 一些Guardfile示例也使用了–drb,这会给我带来问题。 一旦删除所有测试工作正常。