という名前のファイルを考えてみましょうweird1.rb
:
load 'weird2.rb'
とweird2.rb
:
p = gets.chomp
puts "Got input: #{p}"
weird1.rb
引数なしで実行するとgets
、コンソールからユーザーの入力が読み取られます。
c:\a\ruby>weird1.rb
test
Got input: test
引数を指定して実行すると、指定された引数からgets
読み取ります (以下の場合はそれぞれsomeRandomArg
とweird2.rb
):
c:\a\ruby>weird1.rb someRandomArg
weird2.rb:1:in `gets': No such file or directory - someRandomArg (Errno::ENOENT)
c:\a\ruby>weird1.rb weird2.rb
Got input: p = gets.chomp
の引数weird2
から読み取るのはなぜですか? weird1
これは予想外のようです。gets
ファイルではなくから読み取ることになってstdin
います。何が起こっているのですか?どうすれば修正できますか?