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中找到解决方案:
一般来说 – 更换
::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,这会给我带来问题。 一旦删除所有测试工作正常。