My ruby script gets certain inputs from command line arguments. It check if any of the command line argument is missing, then it prompts for an input from user. But i am not able to get input from user using gets.
Sample code: test.rb
name=""
ARGV.each do|a|
if a.include?('-n')
name=a
puts "Argument: #{a}"
end
end
if name==""
puts "enter name:"
name=gets
puts name
end
Running script: ruby test.rb raghav-k
Results in the error:
test.rb:6:in `gets': No such file or directory - raghav-k (Errno::ENOENT)
from test.rb:6:in `gets'
from test.rb:6:in `<main>'
Any pointers in this direction will be really grateful Thanks Sandy
gets
will only read from the real $stdin
(ie the user) if there are no command line arguments. Otherwise it'll take those arguments as files to concatenate as a virtual $stdin
.
You can use STDIN.gets
to make sure you're always using the right function.
You can also delete the arguments from ARGV
as you go (or remove them all in one go), your gets
should work correctly.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With