Вот файл рубин в /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
или делает ее исполняемой с помощью shebang.
Это определенно нестандартное поведение, вызванное чем-то в моей среде Ruby, но я не могу себе представить, что это такое. У меня есть Rails и множество других камней. Любая идея, что может вызвать это?
Я не могу воспроизвести описанное вами поведение. –
Можете ли вы попытаться отследить, откуда на самом деле происходит 'puts'? Попробуйте сделать что-то вроде этого: 'alias old_puts puts; def puts (s); file = File.basename (caller.first); old_puts ("puts() from # {file}: # {s}"); конец' –
невозможно воспроизвести. –