2

我目前正在从 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>'

有没有人知道可能导致这种情况的原因,或者我如何能够找到原因?

到目前为止,我尝试了一些事情,但无济于事:

  • 将 rspec 降级到较低版本(>= 3.3.0,因为那--bisect是添加的时间)。
  • 将 ruby​​ 升级到更高版本(即2.3.1)。(这会导致一些我尚未解决的测试失败,但仍然不会影响这个--bisect问题)。
  • 使用 ,清理系统rvm gemset empty <project_name>; gem install bunder; bundle以清除周围的所有升级前库代码。

还值得注意的是,我在这台计算机上还有其他Rails 项目,它们运行--bisect得很好——所以我不认为这可能是系统库兼容性问题。我想这一定与项目配置有关——但是什么?!(我什至看不到应用程序回溯的线索??)

编辑:还没有找到解决方案,我继续升级应用程序。它现在正在运行Rails v4.2.7Ruby v2.3.1并且所有规格都通过了(但仍然存在一些订购问题)。运行时的错误信息rspec --bisect保持不变。

4

2 回答 2

2

我已经看到了这个错误,并通过绕过 spring 和 spring-commands-rspec 来修复它。

不要使用bin/rspec --bisect,尝试:

# Stop spring
bin/spring stop

# Ensure rspec isn't using spring
bundle exec rspec --bisect
于 2016-12-08T11:10:39.387 回答
0

这是一个很长的镜头,但你碰巧有一个 .rspec 文件吗?

通过添加 spork,我能够在一个空的 rails 项目上重新创建一个类似的错误。出于某种原因,跑步rspec --bisect --drb会引发这个问题。

spork 文档建议--drb直接添加到 .rspec 文件。因此,请确保它已被删除,并且在您运行时rspec --bisect它应该可以工作。

于 2016-08-05T15:25:32.463 回答