Следующие сбои с Errno::ENOENT: No such file or directory
, даже если файл существует:
open('~/some_file')
Однако я могу сделать это:
open(File.expand_path('~/some_file'))
У меня есть два вопроса:
open
обработать тильду как указывающий на корневой каталог?File.expand_path
?$HOME
является простым соглашением; действительно, если вы посмотрите документацию к File.expand_path
, она правильно интерпретирует тильду, но это особенность самой функции, а не что-то присущее базовой системе; также, File.expand_path
требует, чтобы переменная окружения $HOME
была правильно установлена. Что приводит нас к возможной альтернативе... Try this:
open(ENV['HOME']+'/some_file')
Надеюсь, это достаточно ловко. Я лично думаю, что использование переменной окружения семантически более понятно, чем использование expand_path
.