Доступ к файлам в том же каталоге, что и скрипт - PullRequest
4 голосов
/ 23 декабря 2009

Мне нужен доступ к файлам, относящимся к местоположению моего скрипта Ruby.

Единственное решение, которое я нашел, - это использование File.dirname(__FILE__), однако, если скрипт запускается по символической ссылке, __FILE__ указывает местоположение символической ссылки.

Я бы предпочел решение, которое не включает просмотр __FILE__, проверку, является ли это ссылкой, если она есть, выяснение того, на что она указывает. Но, если нет другого пути, было бы неплохо узнать, есть ли уже драгоценный камень, чтобы сделать это?

Ответы [ 3 ]

4 голосов
/ 23 декабря 2009

помогает File.expand_path?

(у меня нет никс-бокса, чтобы примерить его)

3 голосов
/ 24 декабря 2009

Я предпочитаю следующий вариант: File.expand_path('../other_file_in_same_dir', __FILE__)

Второй аргумент - это точка, откуда будет расширен относительный путь. По умолчанию используется текущий рабочий каталог.

1 голос
/ 23 декабря 2009

Вы всегда можете выполнить команду оболочки вроде ls -l $ (pwd) с помощью popen и проанализировать ее, чтобы перейти по символической ссылке. Для окон вы просто выполнили бы эквивалентную команду windows os (которая, как я предполагаю, существует!)

...