я испытал некоторое странное поведение из приведенного ниже кода:Рубин получает метод генерирует исключение, когда аргументы передаются из консоли
require 'CSV'
$DEBUG = ARGV.empty? ? false : ARGV[0] #Global debug flag.
class PhoneBook
#class code here etc etc
end
PhoneBook.start_dir = "file-io-samples/phonebooks/"
puts "Enter a phonebook!"
name = gets #This is the problem.
puts "Using #{name}.."
Когда я прохожу верно иметь $DEBUG
значение ИСТИНА об исполнении я получаю ошибку от name = gets
, и я понятия не имею, почему. Если я не передаю параметры через командную строку, все работает нормально.
Это ошибка выхода:
C:\Pickaxe>ruby PhoneBook.rb
Enter a phonebook!
Hurrah! Works
Using Hurrah! Works
..
C:\Pickaxe>ruby PhoneBook.rb true
Enter a phonebook!
Exception `Errno::ENOENT' at PhoneBook.rb:62 - No such file or directory - true
PhoneBook.rb:62:in `gets': No such file or directory - true (Errno::ENOENT)
from PhoneBook.rb:62:in `gets'
from PhoneBook.rb:62:in `<main>'
C:\Pickaxe>
Если мне нужно, я могу опубликовать определение класса, но я не думаю, что это часть проблемы.
+1 для предложения OptionParser. Я все понял. При более повторном поиске получает естественный поиск аргументов ARGV для извлечения файлов в аргументы. Мне тоже пришлось использовать $ stdin.gets. Должен быть таким же, как на * nix – Senjai