Estoy tratando de escribir un script que compruebe o actualice automáticamente una URL de Subversion en función de si existe o no un directorio específico.
Por alguna razón, mi código no funciona y siempre devuelve verdadero incluso si es falso:
def directory_exists?(directory)
return false if Dir[directory] == nil
true
end
¿Qué estoy haciendo mal?
Dir.exists?
no ser más limpio queFile.directory?
?Dir.exists?
está en desuso, useDir.exist
Dir.exist?
También puedes usar
Dir::exist?
así:fuente
undefined method `exists?' for Dir:Class (NoMethodError)
. Además, la forma plural ahora está en desuso, use.exist?
en su lugar.Todas las otras respuestas son correctas, sin embargo, puede tener problemas si está tratando de verificar el directorio en el directorio de inicio de un usuario. Asegúrese de expandir la ruta relativa antes de verificar:
fuente
Dir[]
devuelve una matriz, por lo que nunca seránil
. Si quieres hacerlo a tu manera, puedes hacerloque volverá
true
si no se encontró.fuente
Podrías usar
Kernel#test
:obtiene sus orígenes de https://ss64.com/bash/test.html , notará que bash
test
tiene esta bandera-d
para probar si existe un directorio-d file True if file is a Directory. [[ -d demofile ]]
fuente