Хотя это не относится к каждой ситуации, часто приятно иметь возможность обрабатывать несколько файлов в одной командной строке, например:
script.rb [options] file1 file2 ...
file1 является обязательным, но file2 и вышеявляется необязательным.
Лучший из известных мне способов сделать это следует этому соглашению:
options = {}
optparse = OptionParser.new do |opts|
opts.banner = "Usage: script.rb [options] file1 file2 ..."
opts.on('-a', '--an-option ARG', 'Set some option') do |arg|
options[:a] = arg
end
...
end
optparse.parse!
# Check required conditions
if ARGV.empty?
puts optparse
exit(-1)
end
Если файлы не предоставлены, появится сообщение справки с баннером использования и описаниемопции.Если файлы присутствуют, они останутся единственными в ARGV.