Как использовать «получает» в задаче с рейком?


80

Я получаю сообщение об ошибке всякий раз, когда пытаюсь использовать функцию, попадающую в задачу rake. Есть ли способ заставить его работать?

Ошибка говорит: «нет такого файла или каталога - (название задачи сгребания)»


Сообщение об ошибке кажется самоочевидным ...
Митч Уит,

6
Может показаться, но это не так. Смотрите мой ответ ниже. Существует некоторая путаница в отношении разницы между Kernel # gets и STDIN.gets.
Джеймс А. Розен,

Ответы:


158

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

Попробуй STDIN.gets.


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

-4

Я не думаю, что вам следует использовать get в задаче rake, если вам нужно получить ввод из командной строки, вы, вероятно, должны передать его в качестве параметра, но если вы разместите какой-то код, который не работает, я уверен вы получите лучший ответ.


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