Подтвердить что ты не робот

Как проверить, существует ли каталог/файл/символьная ссылка с одной командой в Ruby

Есть ли один способ обнаружения, если каталог/файл/symlink/etc. сущность (более обобщенная) существует?

Мне нужна одна функция, потому что мне нужно проверить массив путей, которые могут быть каталогами, файлами или символическими ссылками. Я знаю, что File.exists?"file_path" работает для каталогов и файлов, но не для символических ссылок (это File.symlink?"symlink_path").

4b9b3361

Ответ 1

Стандартный файловый модуль имеет обычные файлы тестов:

RUBY_VERSION # => "1.9.2"
bashrc = ENV['HOME'] + '/.bashrc'
File.exist?(bashrc) # => true
File.file?(bashrc)  # => true
File.directory?(bashrc) # => false

Вы должны быть в состоянии найти то, что вы хотите там.


OP: "Спасибо, но мне нужны все три истинные или ложные"

Очевидно, нет. Итак, попробуйте что-то вроде:

def file_dir_or_symlink_exists?(path_to_file)
  File.exist?(path_to_file) || File.symlink?(path_to_file)
end

file_dir_or_symlink_exists?(bashrc)                            # => true
file_dir_or_symlink_exists?('/Users')                          # => true
file_dir_or_symlink_exists?('/usr/bin/ruby')                   # => true
file_dir_or_symlink_exists?('some/bogus/path/to/a/black/hole') # => false

Ответ 2

Почему бы не определить свою собственную функцию File.exists?(path) or File.symlink?(path) и использовать ее?