Command Line Arguments problem

Greetings,
  I am working on a project and I added command line options. Today, I
took the fateful step in adding the capability to do multiple options in
the program. For some reason, the code, which worked perfectly before
this, now spews out the error:
    undefined method "-" for nil:NilClass (NoMethodError)
The code in question is:
    dateArr[0] = DateTime.parse(ARGV[1])
Now, this error pops up because ARGV[1] is nil. But if I run the
program :
    ruby Hercules.rb -c 2010-04-15
ARGV[1] should be 2010-04-15. What is the problem here?

Thank you,
  dlucci

···

--
Posted via http://www.ruby-forum.com/.

It must be something else, cause this works for me:

require 'date'

puts DateTime.parse(ARGV[1])

and calling this as

ruby test.rb -c 2010-04-15

prints the date.

Can you show the full code that errors?

Jesus.

···

On Wed, May 12, 2010 at 11:16 PM, Derril Lucci <derril.lucci@gmail.com> wrote:

Greetings,
I am working on a project and I added command line options. Today, I
took the fateful step in adding the capability to do multiple options in
the program. For some reason, the code, which worked perfectly before
this, now spews out the error:
undefined method "-" for nil:NilClass (NoMethodError)
The code in question is:
dateArr[0] = DateTime.parse(ARGV[1])
Now, this error pops up because ARGV[1] is nil. But if I run the
program :
ruby Hercules.rb -c 2010-04-15
ARGV[1] should be 2010-04-15. What is the problem here?

Hi Derril,

When working with command-line options, you'll have a much better time
working with OptionParser -- it's part of the Ruby standard library:

http://ruby-doc.org/stdlib/libdoc/optparse/rdoc/classes/OptionParser.html

Mat

···

On Wed, May 12, 2010 at 17:16, Derril Lucci <derril.lucci@gmail.com> wrote:

Greetings,
I am working on a project and I added command line options. Today, I
took the fateful step in adding the capability to do multiple options in
the program. For some reason, the code, which worked perfectly before
this, now spews out the error:
undefined method "-" for nil:NilClass (NoMethodError)
The code in question is:
dateArr[0] = DateTime.parse(ARGV[1])
Now, this error pops up because ARGV[1] is nil. But if I run the
program :
ruby Hercules.rb -c 2010-04-15
ARGV[1] should be 2010-04-15. What is the problem here?

Thank you,
dlucci
--
Posted via http://www.ruby-forum.com/\.

Certainly.

opts is an array of Getoptlong type and holds the options and their
requirements.

opts.each do |opt, arg|
  case opt
    when "--date", "-d"
      dateArr[0] = DateTime.parse(ARGV[1])
.
.
.

That is more of the code in question. Hope if helps.

Cheers,
  dlucci

···

--
Posted via http://www.ruby-forum.com/.

Derril Lucci wrote:

That is more of the code in question. Hope if helps.

No, but it will help if you can provide a complete, standalone program
which demonstrates the problem. Either write a program from scratch just
to demonstrate the problem, or keep trimming out code from your existing
program until you can no longer demonstrate it.

···

--
Posted via http://www.ruby-forum.com/\.

Figured it out. Turns out, I was checking if ARGV's size was 0, then
trying it. Clearly, if ARGV was 0, there are no options or arguments.
Thus, dateArr[0] is nil and cannot be used for equations. Thanks for
all your help!

Cheers,
  dlucci

···

--
Posted via http://www.ruby-forum.com/.