Jak używać „gets” w zadaniu rake?

80

Za każdym razem, gdy próbuję użyć funkcji, pojawia się błąd w ramach zadania prowizji. Czy jest sposób, aby to zadziałało?

Błąd mówi „nie ma takiego pliku lub katalogu - (nazwa zadania rake)”

James A. Rosen
źródło
Komunikat o błędzie wydaje się dość oczywisty ...
Mitch Wheat
6
Może się tak wydawać, ale tak nie jest. Zobacz moją odpowiedź poniżej. Istnieje spore zamieszanie co do różnicy między Kernel # gets i STDIN.gets.
James A. Rosen

Odpowiedzi:

158

Problem polega na tym, że Kernel#gets(co wywołujesz, jeśli używasz tylko getssamego), zakłada, że ​​pobierasz z pliku nazwanego przez argumenty przekazane do Rake. Oznacza to gets, że próbuje zwrócić zawartość pliku o nazwie [rake-task-here], który prawie na pewno nie istnieje.

Spróbuj STDIN.gets.

James A. Rosen
źródło
3
Zbieranie drobnych nitów: $stdinjest prawdopodobnie lepsze STDINtutaj, zobacz także stackoverflow.com/a/4279689/968531
NobodysNightmare
-4

Nie sądzę, że powinieneś używać gets w zadaniu rake, jeśli potrzebujesz uzyskać dane wejściowe z wiersza poleceń, prawdopodobnie powinieneś podać to jako parametr, ale jeśli opublikujesz jakiś kod, który nie działa, jestem pewien otrzymasz lepszą odpowiedź.

nitecoder
źródło
21
Ogólnie rzecz biorąc, argumenty wiersza poleceń lepszą opcją, ale istnieje wiele dobrych powodów, dla których warto używać get w zadaniu rake. Większość z nich ma związek z uwierzytelnianiem lub weryfikacją, że naprawdę chcesz robić to, co każesz rake'owi. („wdrożyć kod produkcyjny”)
James A. Rosen