gets() makes my Ruby hang...?

P

PythonUsr

I'm using Ruby 1.8.5, with SciTE as my IDE.
I'm not a beginner at Ruby, I've been using it for about a year and a
half now.

I just got a new computer, so I installed Ruby onto it. So I open up
SciTE and type out a fairly long program. I run it, and all that pops
up is the cmd window that should compile my code. It hangs there
forever until I close it manually. I said "what is up with this?" and
I tried something. I had an inkling that it was gets() that was
causing my problems, so I made a new program:

name = gets("What is your name? ")
puts name

It still hangs! So, I make a new program, and put:

gets()

It hangs! When I make a program that says

puts("Hello!")

It works fine.

Help me!
 
T

Tom Rauchenwald

PythonUsr said:
I'm using Ruby 1.8.5, with SciTE as my IDE.
I'm not a beginner at Ruby, I've been using it for about a year and a
half now.

I just got a new computer, so I installed Ruby onto it. So I open up
SciTE and type out a fairly long program. I run it, and all that pops
up is the cmd window that should compile my code. It hangs there
forever until I close it manually. I said "what is up with this?" and
I tried something. I had an inkling that it was gets() that was
causing my problems, so I made a new program:

name = gets("What is your name? ")
puts name

I don't think that is what you want, more likely you want something
like:

puts "What is your name? "
name = gets
puts name

Look up the definition for gets, the argument for it is the record
separator, meaning that with your code you had to type What is your
name? to stop inputting.
It still hangs! So, I make a new program, and put:

gets()

Maybe because it waits for input?

Tom
 
C

Chris Shea

I'm using Ruby 1.8.5, with SciTE as my IDE.
I'm not a beginner at Ruby, I've been using it for about a year and a
half now.

I just got a new computer, so I installed Ruby onto it. So I open up
SciTE and type out a fairly long program. I run it, and all that pops
up is the cmd window that should compile my code. It hangs there
forever until I close it manually. I said "what is up with this?" and
I tried something. I had an inkling that it was gets() that was
causing my problems, so I made a new program:

name = gets("What is your name? ")
puts name

It still hangs! So, I make a new program, and put:

gets()

It hangs! When I make a program that says

puts("Hello!")

It works fine.

Help me!


There's a well-discussed issue with Windows, Scite, and stdin. It's
Scite thats hanging. If you run your script from the command line it
should work. Searching this list for "scite windows stdin" I think
might find you a solution to getting gets working from Scite.

HTH,
Chris
 
P

PythonUsr

I don't think that is what you want, more likely you want something
like:

puts "What is your name? "
name =gets
puts name

Look up the definition forgets, the argument for it is the record
separator, meaning that with your code you had to type What is your
name? to stop inputting.



Maybe because it waits for input?

Tom

No. It doesn't take anything in. It just hangs there, until I exit the
window. I'll try it from the command line, but I've never had this
problem before.
puts "What is your name? "
name = gets
puts name

Still, no. You think I wouldn't have tried something like that? xD
 
K

Kev

No. It doesn't take anything in. It just hangs there, until I exit the
window. I'll try it from the command line, but I've never had this
problem before.


Still, no. You think I wouldn't have tried something like that? xD

I had this same problem, run it from the command line and it will be
fine.
 
S

Stefan Mahlitz

PythonUsr said:
I'm using Ruby 1.8.5, with SciTE as my IDE.
I'm not a beginner at Ruby, I've been using it for about a year and a
half now.

I just got a new computer, so I installed Ruby onto it. So I open up
SciTE and type out a fairly long program. I run it, and all that pops
up is the cmd window that should compile my code. It hangs there
forever until I close it manually. I said "what is up with this?" and
I tried something. I had an inkling that it was gets() that was
causing my problems, so I made a new program:

name = gets("What is your name? ")
puts name

You may want:

print "What is your name? "
$stdout.flush
name = gets()
puts name

and enter in the scite console.

You can ignore the cmd-window that pops up.

At least it does work for me

Stefan.
 
E

Eric Jacoboni

There's a well-discussed issue with Windows, Scite, and stdin. It's
Scite thats hanging.

Just put:

$stdin.sync = true

on top of your source file.

--
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,071
Latest member
MetabolicSolutionsKeto

Latest Threads

Top