Ответ 1
Если есть аргументы, метод gets
по умолчанию пытается обработать первый файл в качестве файла и прочитать его. Чтобы читать из $stdin
в такой ситуации, вы должны явно использовать его:
print "Say something! "
input = $stdin.gets
Я новичок в Ruby, и сегодня я написал приложение, которое вы можете передать аргументам через ARGV. Но внутри моего приложения я хочу использовать "получает". Проблема в том, что каждый раз, когда я пытаюсь это сделать, я получаю сообщение об ошибке.
Вот простой script, который показывает мою проблему:
print "Say something! "
input = gets
Если бы я назвал это так:
$ ruby script.rb this is arguments
Я получаю эту ошибку:
script.rb:2:in `gets': No such file or directory - this (Errno::ENOENT)
from script.rb:2
Надеюсь, кто-то сможет помочь мне решить эту проблему, поэтому я могу продолжить свое путешествие по Руби.:)
Изменить: Я знаю, что "Gets" не будет извлекать аргументы, переданные в файл. "Gets" запросит пользователя для ввода. Я хочу иметь возможность использовать оба этих метода в своем приложении.
Если есть аргументы, метод gets
по умолчанию пытается обработать первый файл в качестве файла и прочитать его. Чтобы читать из $stdin
в такой ситуации, вы должны явно использовать его:
print "Say something! "
input = $stdin.gets
Вы должны использовать STDIN.gets
not Kernel#gets
.