は、Rubyのファイルが/path/to/test/test.rb
である:このルビスクリプトが実行ファイルへのパスをエコーしているのはなぜですか?ここで
# /path/to/test/test.rb
puts 'foobar'
ここで私はそれを実行したときに何が起こるかです:
$ cd /path/to/test/
$ ruby test.rb
foobar
これまでのところ、とても良いです。しかし:
$ cd ..
$ ruby test/test.rb
/path/to/test/ # <=== wtf?
foobar
現在のフォルダの外で実行すると、Rubyがスクリプトへのパスを表示するのはなぜですか?この問題はRubyスクリプトでのみ発生し、$ ruby test.rb
で実行するかどうかにかかわらず、またはシバンで実行可能にするかどうかに関係なく発生します。
これは私のRuby環境の何かによって引き起こされた非標準的な動作ですが、それは何かを想像することはできません。私はRailsと他の多くの宝石をインストールしています。これを引き起こす原因は何ですか?
説明した動作を再現できません。 –
'puts'がどこから来ているのかを調べることができますか?次のようにしてみてください: 'alias old_puts puts; def puts(s); file = File.basename(caller.first); old_puts( "puts()from#{file}:#{s}");終了 ' –
再生できません。 –