Wie verwende ich "Gets" für eine Rechenaufgabe?

79

Ich erhalte eine Fehlermeldung, wenn ich versuche, die Funktion innerhalb einer Rechenaufgabe zu verwenden. Gibt es eine Möglichkeit, es zum Laufen zu bringen?

Der Fehler lautet: "Keine solche Datei oder kein solches Verzeichnis - (Name der Rechenaufgabe)"

James A. Rosen
quelle
Die Fehlermeldung scheint ziemlich selbsterklärend ...
Mitch Wheat
6
Es mag so scheinen, ist es aber nicht. Siehe meine Antwort unten. Der Unterschied zwischen Kernel # get und STDIN.gets ist ziemlich verwirrend.
James A. Rosen

Antworten:

157

Das Problem ist, dass Kernel#gets(was Sie aufrufen, wenn Sie es nur getsalleine verwenden) davon ausgegangen wird, dass Sie aus einer Datei ziehen, die durch die an Rake übergebenen Argumente benannt ist. Das heißt, es wird getsversucht, den Inhalt einer Datei namens [rake-task-here] zurückzugeben, die mit ziemlicher Sicherheit nicht vorhanden ist.

Versuchen Sie es STDIN.gets.

James A. Rosen
quelle
3
Kleine Nissenpflückung: $stdinist hier wahrscheinlich vorzuziehen STDIN, siehe auch stackoverflow.com/a/4279689/968531
NobodysNightmare
-4

Ich denke nicht, dass Sie Get in einer Rake-Task verwenden sollten. Wenn Sie Eingaben über die Befehlszeile benötigen, sollten Sie diese wahrscheinlich als Parameter übergeben, aber wenn Sie Code veröffentlichen, der nicht funktioniert, bin ich mir sicher Sie werden eine bessere Antwort bekommen.

Nitecoder
quelle
21
Im Allgemeinen Kommandozeilenargument ist eine bessere Option, aber es gibt viele gute Gründe für den Einsatz ist innerhalb einer Harke Aufgabe. Die meisten von ihnen haben mit der Authentifizierung oder Überprüfung zu tun, dass Sie wirklich das tun möchten, was Sie Rake sagen. ("Produktionscode bereitstellen")
James A. Rosen