2009-02-23 5 views
68

Ich bekomme einen Fehler, wenn ich versuche, die Funktion innerhalb einer Rake-Aufgabe zu bekommen. Gibt es eine Möglichkeit, es zum Laufen zu bringen?Wie verwende ich "gets" für eine Rake-Aufgabe?

Der Fehler sagt: „keine solche Datei oder das Verzeichnis - (rake Aufgabenname)“

+0

Die Fehlermeldung scheint ziemlich selbsterklärend ... –

+5

Es mag so scheinen, aber es ist nicht. Siehe meine Antwort unten. Es gibt ziemlich viel Verwirrung über den Unterschied zwischen Kernel # gets und STDIN.gets. –

Antwort

138

Das Problem ist, dass Kernel#gets (das ist, was Sie anrufen, wenn Sie nur gets selbst verwenden) geht davon aus, dass Sie aus einer Datei durch die übergebenen Argumente genannt ziehen Rake. Das bedeutet gets versucht, den Inhalt einer Datei namens [Rake-Task-hier] zurückgeben, die fast sicher nicht existiert.

Versuchen Sie STDIN.gets.

+1

Das war's! Perfekt – debbie

-4

Ich glaube nicht, dass Sie bekommt in einer Harke Aufgabe verwenden sollten, wenn Sie eine Eingabe von dem Befehl erhalten müssen Zeile sollte Sie wahrscheinlich als Parameter übergeben, aber wenn Sie Code, der nicht funktioniert, dann bin ich sicher, dass Sie eine bessere Antwort bekommen.

+19

Im Allgemeinen sind Befehlszeilenargumente _are_ eine bessere Option, aber es gibt viele gute Gründe, Gets innerhalb einer Rake-Task zu verwenden. Die meisten von ihnen haben mit Authentifizierung oder Verifikation zu tun, dass Sie wirklich tun wollen, was Sie Rake zu tun sagen. ("deploy production code") –

Verwandte Themen