我目前正在从Rails 3升级相当大的Rails应用程序 - > Rails 4(或者5)。
我目前处于Rails v4.0.13
应用程序的位置,在Ruby v2.1.5
上运行。测试套件在RSpec v3.5.2
上运行,并且绿色(哇喔!),但遗憾的是有一些间歇性故障。
理想情况下,我希望在使用rspec --bisect进一步升级之前找出这些失败的原因。
但是,当我运行rspec --bisect
(有或没有其他参数)时,我收到以下错误:
Bisect started using options: ""
Running suite to find failures...
Bisect failed! Failed to get results from the spec run. Spec run output:
(druby://127.0.0.1:33858) /home/tom/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/drb/drb.rb:1588:in `perform_without_block': undefined method `run' for #<RSpec::Core::Bisect::Server:0x00000001e71430> (NoMethodError)
from (druby://127.0.0.1:33858) /home/tom/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/drb/drb.rb:1548:in `perform'
from (druby://127.0.0.1:33858) /home/tom/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/drb/drb.rb:1626:in `block (2 levels) in main_loop'
from (druby://127.0.0.1:33858) /home/tom/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/drb/drb.rb:1622:in `loop'
from (druby://127.0.0.1:33858) /home/tom/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/drb/drb.rb:1622:in `block in main_loop'
from /home/tom/.rvm/gems/ruby-2.1.5@<project-name>/gems/rspec-core-3.5.2/lib/rspec/core/drb.rb:23:in `run'
from /home/tom/.rvm/gems/ruby-2.1.5@<project-name>/gems/rspec-core-3.5.2/lib/rspec/core/invocations.rb:19:in `call'
from /home/tom/.rvm/gems/ruby-2.1.5@<project-name>/gems/rspec-core-3.5.2/lib/rspec/core/runner.rb:69:in `run'
from /home/tom/.rvm/gems/ruby-2.1.5@<project-name>/gems/rspec-core-3.5.2/lib/rspec/core/runner.rb:45:in `invoke'
from /home/tom/.rvm/gems/ruby-2.1.5@<project-name>/gems/rspec-core-3.5.2/exe/rspec:4:in `<main>'
有没有人知道可能导致这种情况的原因,或者我如何追查原因?
到目前为止,我尝试了一些事情,但无济于事:
>= 3.3.0
,因为添加--bisect
时就是这样。)2.3.1
)。 (这导致一些我尚未解决的测试失败,但仍然不会影响此--bisect
问题。)rvm gemset empty <project_name>; gem install bunder; bundle
清理系统,以清除所有正在升级的库代码。还值得注意的是,我在这台计算机上有其他 Rails项目,运行--bisect
的工作正常 - 所以我不认为这可以是一个系统库兼容性问题。我想这一定与项目配置有关 - 但是是什么?!(我甚至无法看到应用程序回溯的线索?)
修改:如果尚未找到解决方案,我会继续升级该应用程序。它现在正在运行Rails v4.2.7
和Ruby v2.3.1
,所有规格都已通过(但仍有一些排序问题)。运行rspec --bisect
时的错误消息保持不变。
答案 0 :(得分:2)
我已经看到了这个错误并通过绕过spring和spring-commands-rspec修复了它。
请勿使用bin/rspec --bisect
,请尝试:
# Stop spring
bin/spring stop
# Ensure rspec isn't using spring
bundle exec rspec --bisect
答案 1 :(得分:0)
这是一个很长的镜头,但你碰巧有一个.rspec文件吗?
我能够在空的rails项目中重新添加类似的错误,并添加spork。出于某种原因,运行rspec --bisect --drb
会引发此问题。
spork文档建议直接添加--drb
.rspec文件。因此,请确保它已被删除,当您只运行rspec --bisect
时,它应该可以正常工作。