Як я використовую “отримує” для завдання граблі?


80

Я отримую повідомлення про помилку щоразу, коли я намагаюся використовувати функцію, яка потрапляє в завдання граблі. Чи є спосіб змусити це працювати?

Помилка говорить, "немає такого файлу або каталогу - (назва завдання граблі)"


Повідомлення про помилку виглядає досить зрозумілим ...
Mitch Wheat

6
Може здатися так, але це не так. Дивіться мою відповідь нижче. Існує досить багато плутанини щодо різниці між ядром # отримує та STDIN.gets.
James A. Rosen

Відповіді:


158

Проблема в тому, що Kernel#gets(що ви телефонуєте, якщо просто використовуєте само getsпо собі), передбачає, що ви витягуєте файл, названий аргументами, переданими Rake. Це означає, що getsнамагається повернути вміст файлу під назвою [rake-task-here], якого майже напевно не існує.

Спробуйте STDIN.gets.


3
Невеликий збір гніди: $stdinмабуть, кращийSTDIN тут, а також побачити stackoverflow.com/a/4279689/968531
NobodysNightmare

-4

Я не думаю, що ви повинні використовувати отримує завдання rake, якщо вам потрібно отримати вхід з командного рядка, ви, мабуть, повинні передати його як параметр, але якщо ви розмістите якийсь код, який не працює, то я впевнений ви отримаєте кращу відповідь.


21
Взагалі аргументи командного рядка є кращим варіантом, але є маса вагомих причин, щоб використовувати get в рамках rake-завдання. Більшість з них пов’язані з автентифікацією або підтвердженням того, що ви дійсно хочете робити те, що велите рейку робити. ("розгорнути виробничий код")
Джеймс А. Розен,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.