2014-11-24 2 views
0

У меня есть программа на Ruby (проект школы), где мне нужно указать сервер и порт, как так:рубин ФГДД и дополнительные параметры шаткий

ruby program.rb -s servername -p 8080 

мне нужно, чтобы иметь возможность ввести файл в STDIN (используя < оператор в Linux/Unix терминал)

ruby program.rb -s servername -p 8080 < testfile.txt 

Я сделал тест рубиновый скрипт, который просто puts gets. При запуске его как этот

ruby test.rb -s servername -p 8080 < testfile.txt 

Я получаю эту ошибку:

test.rb:5:in 'gets': No such file or directory @ rb_sysopen - -s (Errno::ENOENT) 

Когда я поиграться с параметрами, это выглядит как рубин пытается открыть файл с именем первого параметра («-s» в этом случае) вместо файла, указанного после оператора <.

Любой способ исправить это? Я получил ту же ошибку и на Ruby 2.1.0 и 2.1.5.

EDIT: Просто попытался сделать STDIN.readline, и он отлично работает ... что ???

+1

Код может облегчить отладку. –

+1

Прежде всего, подумайте, хотите ли вы получить ответы на свой школьный проект, где вы должны сами это выяснить, как часть вашего учебного процесса. Помните, что любые ответы, которые мы добавляем, легко найти учитель/профессор. И, как сказал @DaveNewton, нам нужно увидеть код, если мы собираемся помочь вам с чем-либо, кроме дикой догадки. –

ответ

0

Когда вы звоните только gets, вы звоните Kernel#gets.

Когда вы звоните STDIN.gets, то вы звоните IO#gets.

Я согласен, это немного неудобно.

Смежные вопросы