I need some help with OptionsParser


#1

Hey all,

I must be doing something wrong here. Im calling the following file
this way:
ruby script.rb -s 1234
or
ruby script.rb -s1111

#Code snip
require ‘optparse’
opts = OptionParser.new
opts.on("-s", “–size VAL”, Integer) do |val|
puts “-s #{val}”
puts val
end

But…no matter what I do, I don’t get any values out. I must be doing
something wrong??

Thanks!
Brian
PS: The documentation really isn’t too clear on this…


#2

On Monday 20 March 2006 1:13 pm, removed_email_address@domain.invalid wrote:

opts = OptionParser.new
opts.on("-s", “–size VAL”, Integer) do |val|
puts “-s #{val}”
puts val
end

I think the “Integer” is unnecessary. Here’s how I usually use it:

opts.on("-p", “–prefix NAME”, “REQUIRED: Set the prefix NAME (like
‘ldpg’).”) {|p| $prefix = p}

HTH,
Keith


#3

Not working on my end… Still PUTS nothing?


#4

Am I calling it wrong?

ruby test.rb -p test
or
ruby test.rb -ptest

still put nothing :frowning:


#5

Hey… Well, I was… There really must be something up here.

Code: (test.rb)
require ‘optparse’
opts = OptionParser.new
opts.on("-s", “–size VAL”, “Something to describe size”) {|s| puts
“Size is: #{s}”}
opts.parse! # the important part…

Result:
C:\temp>ruby test.rb -s “Very Big”

C:\temp>


#6

On Monday 20 March 2006 1:33 pm, removed_email_address@domain.invalid wrote:

Not working on my end… Still PUTS nothing?

Are you parsing them?

keith@devel /work/tools/keith/bin/oneoff $ cat ./rubytalk.rb
#!/usr/bin/env ruby
require ‘optparse’
opts = OptionParser.new
opts.on("-s", “–size VAL”, “Something to describe size”) {|s| puts
“Size is: #{s}”}
opts.parse! # the important part…

keith@devel /work/tools/keith/bin/oneoff $ ./rubytalk.rb -s “Very Big”
Size is: Very Big

HTH,
Keith


#7

On Tue, 21 Mar 2006, removed_email_address@domain.invalid wrote:

C:\temp>ruby – test.rb -s “Very Big”
^^
^^
^^

you are passing ‘-s’ to ruby, not test.rb. the ‘–’ tells ruby to stop
processing command line options.

-a


#8

That seems right! But alas :frowning:

C:\temp>ruby – test.rb -s “Very Big”

C:\temp>


#9

Nada… This isn’t working either:

c:\temp>test.rb -s “Very Big”

c:\temp>

(But it kind of rules out the problem being the – though right?)


#10

On Tue, 21 Mar 2006, removed_email_address@domain.invalid wrote:

That seems right! But alas :frowning:

C:\temp>ruby – test.rb -s “Very Big”

try

ruby test.rb – -s “Very Big”

-a