When I run this sample from the OptionParser documentation:
require 'optparse'
options = {}
OptionParser.new do |opts|
opts.banner = "Usage: example.rb [options]"
opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
options[:verbose] = v
end
end.parse!
p options
p ARGV
and type: ruby test.rb -v 100
, it returns:
{:verbose=>true}
["100"]
Shouldn't verbose be 100
, not a boolean?
I have no idea about this, does anyone have any advice?
You've specified that the
-v
option does not have an argument:If you want it to take an argument then you have to say so:
And if you want to force
n
to be an integer, then:You want to start reading at the
make_switch
docs (such as it is) and then reverse engineer the examples.Don't feel bad about being confused, the OptionParser documentation isn't quite the best thing ever.