J'essaie d'écrire un script qui vérifie ou met à jour automatiquement une URL Subversion en fonction de l'existence ou non d'un répertoire spécifié.
Pour une raison quelconque, mon code ne fonctionne pas et retourne toujours vrai même s'il est faux:
def directory_exists?(directory)
return false if Dir[directory] == nil
true
end
Qu'est-ce que je fais mal?
Dir.exists?
plus propre queFile.directory?
?Dir.exists?
est obsolète, utilisezDir.exist
Dir.exist?
Vous pouvez également utiliser
Dir::exist?
comme ceci:la source
undefined method `exists?' for Dir:Class (NoMethodError)
. De plus, la forme plurielle est désormais obsolète, utilisez-la à la.exist?
place.Toutes les autres réponses sont correctes, cependant, vous pourriez avoir des problèmes si vous essayez de vérifier le répertoire dans le répertoire de base d'un utilisateur. Assurez-vous de développer le chemin relatif avant de vérifier:
la source
Dir[]
renvoie un tableau, donc il ne le sera jamaisnil
. Si tu veux le faire à ta façon, tu peux le fairequi reviendra
true
s'il n'a pas été trouvé.la source
Vous pouvez utiliser
Kernel#test
:il tire ses origines de https://ss64.com/bash/test.html vous remarquerez que bash
test
a cet indicateur-d
pour tester si un répertoire existe-d file True if file is a Directory. [[ -d demofile ]]
la source