Я пытаюсь написать скрипт, который автоматически проверяет или обновляет URL Subversion в зависимости от того, существует ли указанный каталог или нет.
По какой-то причине мой код не работает и всегда возвращает true, даже если это false:
def directory_exists?(directory)
return false if Dir[directory] == nil
true
end
Что я делаю не так?
Dir.exists?
ли чище, чемFile.directory?
?Dir.exists?
устарела, используйтеDir.exist
Dir.exist?
Вы также можете использовать
Dir::exist?
так:источник
undefined method `exists?' for Dir:Class (NoMethodError)
. Кроме того, форма множественного числа теперь устарела, используйте.exist?
вместо этого.Все остальные ответы верны, однако у вас могут возникнуть проблемы, если вы пытаетесь проверить каталог в домашнем каталоге пользователя. Убедитесь, что вы расширили относительный путь перед проверкой:
источник
Dir[]
возвращает массив, поэтому его никогда не будетnil
. Если вы хотите сделать это по-своему, вы могли бы сделатькоторый вернется,
true
если он не был найден.источник
Вы можете использовать
Kernel#test
:он получает свое происхождение от https://ss64.com/bash/test.html, вы заметите, что bash
test
имеет этот флаг,-d
чтобы проверить, существует ли каталог-d file True if file is a Directory. [[ -d demofile ]]
источник