Gets does not block (STDOUT.flush issue?)

File: test.rb

STDOUT.sync=true

puts “File exists. Are you sure?”
STDOUT.flush
answer=gets.chomp
puts answer

executing this file with any parameters (e.g. ./test.rb bla) yields
this:

[:~/ruby]$ ./test.rb bla
File exists. Are you sure?
./test.rb:9:in `gets’: No such file or directory - “bla” (Errno::ENOENT)
from ./test.rb:9
[:~/ruby]$

What gives?!

On Fri, Jun 01, 2007 at 01:59:33PM +0900, Ivan B wrote:

[:~/ruby]$ ./test.rb bla
File exists. Are you sure?
./test.rb:9:in `gets’: No such file or directory - “bla” (Errno::ENOENT)
from ./test.rb:9
[:~/ruby]$

What gives?!

You need:

answer=$stdin.gets.chomp

Ohterwise, gets tries to read from file(s) whose name(s) are given on
the
command line.