Chomp - works in irb, not in program

When I try to use chomp to get user input, I get this error:

private method `chomp' called for nil:NilClass (NoMethodError)

        from d:/scripts/ruby/fix1.rb:82:in `run'
        from d:/scripts/ruby/fix1.rb:128

When I use it in irb, however it works. Anyone have any ideas what I
might be missing here?
Thanks....

···

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

Peter Vanderhaden wrote:

When I try to use chomp to get user input

You can't get user input with chomp. The only thing you get from chomp is a
version of the string you called it on with trailing character removed.

private method `chomp' called for nil:NilClass (NoMethodError)

Yes, there is no chomp method for nil. You need to call chomp on a String. If
you thought that you were calling it on a String, you were thinking wrong.
You should look into that.

···

--
NP: Anathema - Balance
Jabber: sepp2k@jabber.org
ICQ: 205544826

How are you using it in the program? Are you using gets.chomp? Can you
show a code sample?

Peter Vanderhaden wrote:

···

When I try to use chomp to get user input, I get this error:

private method `chomp' called for nil:NilClass (NoMethodError)

        from d:/scripts/ruby/fix1.rb:82:in `run'
        from d:/scripts/ruby/fix1.rb:128

When I use it in irb, however it works. Anyone have any ideas what I
might be missing here?
Thanks....

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

Douglas,
Here's the method I'm using:

  def checkChange
      puts "Do you want to change something else (y/N): "
      changeIt = gets.chomp
      if changeIt =~ /^[yY]/
         puts "Enter string to change: "
         before = gets.chomp
         puts "Enter new string: "
         after = gets.chomp
         puts "Global change? (N/y): "
         global = gets.chomp
      end
  end # End checkChange method.

Douglas Greenshields wrote:

···

How are you using it in the program? Are you using gets.chomp? Can you
show a code sample?

Peter Vanderhaden wrote:

When I try to use chomp to get user input, I get this error:

private method `chomp' called for nil:NilClass (NoMethodError)

        from d:/scripts/ruby/fix1.rb:82:in `run'
        from d:/scripts/ruby/fix1.rb:128

When I use it in irb, however it works. Anyone have any ideas what I
might be missing here?
Thanks....

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

Sebastian,
Right you are! When I did the original post, I screwed it up. I know
chomp doesn't get user input, I was using it with gets, and it didn't
work. I've got to do a better job of proofreading before I hit submit.
Sorry!

Sebastian Hungerecker wrote:

···

Peter Vanderhaden wrote:

When I try to use chomp to get user input

You can't get user input with chomp. The only thing you get from chomp
is a
version of the string you called it on with trailing character removed.

private method `chomp' called for nil:NilClass (NoMethodError)

Yes, there is no chomp method for nil. You need to call chomp on a
String. If
you thought that you were calling it on a String, you were thinking
wrong.
You should look into that.

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

Douglas:
I forgot to mention that the puts command outputs the prompt to the
screen, but the program never pauses to give the user a chance to enter
anything for an answer. I'm assuming that's why the .chomp part doesn't
work. The first thing I need to do is figure out why gets isn't causing
the program to pause to accept the user input.
Thanks,
PV

Peter Vanderhaden wrote:

···

Douglas,
Here's the method I'm using:

  def checkChange
      puts "Do you want to change something else (y/N): "
      changeIt = gets.chomp
      if changeIt =~ /^[yY]/
         puts "Enter string to change: "
         before = gets.chomp
         puts "Enter new string: "
         after = gets.chomp
         puts "Global change? (N/y): "
         global = gets.chomp
      end
  end # End checkChange method.

Douglas Greenshields wrote:

How are you using it in the program? Are you using gets.chomp? Can you
show a code sample?

Peter Vanderhaden wrote:

When I try to use chomp to get user input, I get this error:

private method `chomp' called for nil:NilClass (NoMethodError)

        from d:/scripts/ruby/fix1.rb:82:in `run'
        from d:/scripts/ruby/fix1.rb:128

When I use it in irb, however it works. Anyone have any ideas what I
might be missing here?
Thanks....

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

Peter Vanderhaden wrote:

Douglas:
I forgot to mention that the puts command outputs the prompt to the
screen, but the program never pauses to give the user a chance to enter
anything for an answer.

Are you by any chance running the script with any command line arguments?
That would cause Kernel#gets to read from disk instead of from stdin which
might explain the behaviour you're experiencing.

HTH,
Sebastian

···

--
NP: In Flames - Black & White
Jabber: sepp2k@jabber.org
ICQ: 205544826

Yes, as you imply, it's an issue with gets, not with chomp. The method
you posted looks pretty textbook - if gets can work, then chomp will
work. For some reason it looks like gets is not pausing the script
application and just returning nil.

···

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

Douglas Greenshields wrote:

For some reason it looks like gets is not pausing the script
application and just returning nil.

gets is reading from the file, that's been passed as a command line argument,
and returning nil because it's empty.

···

--
NP: Moonsorrow - Unohduksen lapsi
Jabber: sepp2k@jabber.org
ICQ: 205544826