Может ли скрипт Ruby сказать, в каком каталоге он находится? - PullRequest
37 голосов

Ответы [ 4 ]

57 голосов
/ 05 февраля 2010

File.dirname(__FILE__) даст вам путь относительно запускаемого скрипта.File.expand_path(File.dirname(__FILE__)) даст вам абсолютный путь.

48 голосов
/ 04 ноября 2015

Использование __dir__

Начиная с Ruby 2.0, __dir__ - самый простой способ получить это. Он

Возвращает канонизированный абсолютный путь к каталогу файла из которого этот метод называется.

См. Документацию __dir__ и " Почему __FILE__ прописные и __dir__ строчные? ".

3 голосов
/ 28 апреля 2017

использование __dir__

File.dirname(__FILE__) неправильный способ получить каталог, в котором хранится скрипт.

При запуске рабочий каталог и каталог с файлом скрипта совпадают, но могут измениться.

Например:

Dir.chdir('..') do
    puts __dir__
    puts File.expand_path(File.dirname(__FILE__))
end

для файла скрипта, хранящегося в /Desktop/tmp, при запуске он выдаст

/home/mateusz/Desktop/tmp
/home/mateusz/Desktop
0 голосов
/ 05 февраля 2010

ENV ["PWD"] кажется мне самым простым способом в Linux. Я не знаю способа, независимого от ОС.

...