2016-08-01 9 views
1

Ich bin gerade dabei, eine ziemlich große Rails-Anwendung von Rails 3 zu aktualisieren - -> Schienen 4 (oder vielleicht 5).RSpec kann nicht ausgeführt werden --bisect, mit Fehler: undefinierte Methode `run 'für # <RSpec :: Core :: Bifect :: Server>

Ich bin derzeit an einem Punkt, wo ich eine Rails v4.0.13 Anwendung habe, die auf Ruby v2.1.5 läuft. Die Testsuite läuft unter RSpec v3.5.2 und ist grün (woohoo!), Aber leider mit einigen zeitweiligen Ausfällen.

Ich möchte im Idealfall die Ursache dieser Fehler aufspüren, bevor Sie weiter upgraden, indem Sie rspec --bisect verwenden.

Allerdings, wenn ich rspec --bisect (mit oder ohne andere Argumente) laufen lasse, erhalte ich folgende Fehlermeldung:

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/[email protected]<project-name>/gems/rspec-core-3.5.2/lib/rspec/core/drb.rb:23:in `run' 
     from /home/tom/.rvm/gems/[email protected]<project-name>/gems/rspec-core-3.5.2/lib/rspec/core/invocations.rb:19:in `call' 
     from /home/tom/.rvm/gems/[email protected]<project-name>/gems/rspec-core-3.5.2/lib/rspec/core/runner.rb:69:in `run' 
     from /home/tom/.rvm/gems/[email protected]<project-name>/gems/rspec-core-3.5.2/lib/rspec/core/runner.rb:45:in `invoke' 
     from /home/tom/.rvm/gems/[email protected]<project-name>/gems/rspec-core-3.5.2/exe/rspec:4:in `<main>' 

Hat jemand eine Ahnung, was dieses verursachen könnte, oder wie ich in der Lage sein zu verfolgen die Ursache runter?

Einige Dinge, die ich bisher ausprobiert habe, ohne Erfolg:

  • Herunterstufung rspec auf eine niedrigere Version (>= 3.3.0, das ist seit wann --bisect hinzugefügt wurde).
  • Upgrade Rubin auf eine höhere Version (nämlich 2.3.1). (Dies führt zu einigen Testfehlern, die ich noch beheben muss, hat aber immer noch keinen Einfluss auf dieses Problem --bisect).
  • Bereinigen Sie das System mit rvm gemset empty <project_name>; gem install bunder; bundle, um alle vor dem Upgrade verfügbaren Bibliothekscodes zu löschen.

Es ist auch erwähnenswert, dass ich andere Rails-Projekte auf diesem Computer haben, für die laufende --bisect funktioniert gut - so glaube ich nicht, dass dies eine Systembibliothek Kompatibilitätsproblem sein kann. Ich denke, es muss etwas mit der Projektkonfiguration zu tun haben - aber was ?!

Edit (Ich kann nicht einmal eine Anwendung zurück-Spur nach Hinweisen ?? e): Ohne eine Lösung für diese noch zu finden, habe ich weiterhin die Anwendung aktualisieren. Es läuft jetzt Rails v4.2.7 und Ruby v2.3.1, mit allen Spezifikationen übergeben (aber immer noch mit einigen Bestellproblem). Die Fehlermeldung beim Ausführen von rspec --bisect bleibt unverändert.

+0

DRb scheint wie eine Ablenkung.Was passiert, wenn Sie rspec --bisect ohne --drb ausführen? –

+0

Ich habe die Option '--drb' nicht eingeschlossen; Dieses Verhalten scheint eine Folge der Verwendung von '-bisect' (?) zu sein. Ich habe auch versucht, die Option ['--no-drb'] (https://github.com/rspec/rspec-core/blob/350c21b6f66a54267ff615ed16604e017122e6be/spec/rspec/core/configuration_options_spec.rb#L3160), aber wieder Erhalte eine identische Konsolenausgabe. –

+0

Siehe auch, [diese Pull-Anfrage] (https://github.com/rspec/rspec-core/pull/2223) - obwohl ich nicht sicher bin, wie relevant es ist, da ich versucht habe, ältere Versionen von rspec zu verwenden auch. –

Antwort

0

Dies ist eine lange Geschichte, aber haben Sie zufällig eine .rspec-Datei?

Ich war in der Lage, einen ähnlichen Fehler auf einem leeren Schienenprojekt mit Hinzufügen von spork es zu erstellen. Aus irgendeinem Grund provoziert dieses Problem rspec --bisect --drb.

Die Dokumentation von spork schlägt vor, --drb direkt in die .rspec-Datei einzufügen. Stellen Sie also sicher, dass es entfernt wurde und wenn Sie nur rspec --bisect ausführen, sollte es funktionieren.

2

Ich habe diesen Fehler gesehen und mit Umgehung von Feder- und Federbefehlen-rspec behoben.

nicht bin/rspec --bisect Verwenden Sie, versuchen Sie:

# Stop spring 
bin/spring stop 

# Ensure rspec isn't using spring 
bundle exec rspec --bisect 
+0

hat mir auch geholfen! Danke! – Masha

Verwandte Themen