2016-11-12 3 views
0

Ich habe Probleme oder bin verwirrt mit einem rspec Fehler beim Laufen:rspec Ausgabe glaubte mit gets.chomp Anruf sein

rspec -fd game_spec 

respec error messaage

(die oben ist nur der Anfang eines langen eror Nachricht)

Wenn ich es ohne die -fd ausführen, funktioniert es ... aber es sieht doof ... etwas ist falsch. Ich bekomme Fehlermeldungen, wenn ich gets.chomp benutze, aber ich habe mir ähnliche Beispiele angesehen, die es benutzen. Muss 'the_word' initialisiert werden? Ist gets.chomp oder kann es? Ich schätze jede Hilfe. Unten ist Spieldatei und seine rspec so weit. Ich möchte mich nicht viel ändern. Ich will nur das bekommen, was ich bisher gearbeitet habe und weiter machen. Vielen Dank!

user interface with issue rspec file

+0

durch die Art und Weise, ist es vorzuziehen einen Codeblock auf die Frage hinzuzufügen, als ein zu verwenden, screenshot –

Antwort

2

Der Grund dafür ist, dass gets liest aus ARGV (Argument Variablen), wie die -fd Flagge Sie rpsec geben sind.

können Sie diese Situation neu ziemlich leicht:

> ruby -e "puts gets.chomp" ASD 
-e:1:in `gets': No such file or directory @ rb_sysopen - ASD (Errno::ENOENT) 
    from -e:1:in `gets' 
    from -e:1:in `<main>' 

Sie dies geschieht durch Entrümpelung verhindern kann ARGV vor gets.

> ruby -e "ARGV.clear; puts gets.chomp" ASD 
asd # <-- I then type this 
asd # <-- and this is printed 

aufrufen können Sie nicht nur ARGV = [] sagen, weil es eine Konstante ist , aber der Aufruf clear ist in Ordnung, weil es die Variable nicht neu definiert.

Kurz, gerade diese irgendwo setzen, bevor gets.chomp:

ARGV.clear 

Hier ist eine andere Frage zum Thema: Ruby readline fails if process started with arguments

+0

danke ein Haufen. also wo genau stellst du es davor? so was? "Code" setzt "Bitte geben Sie mir STRATEGISCH ein Wort, Spieler eins." game.the_word = ARGV.clear gets.chomp.split ('' '' Code '' –

+0

Setzen Sie es in eine eigene Zeile, bevor die 'game.the_word' Zuweisung und' gets.chomp' Aufruf. Wenn Sie 'ARGV' nicht in Ihrem Code verwenden (und Sie nicht zu sein scheinen), können Sie ihn an den Anfang der Datei stellen. –

+0

hab es geschafft! genial. sehr geschätzt ARGV.clear; gets.chomp.split ('') –