Estou tentando escrever um script que faça check-out automático ou atualize uma URL do Subversion com base na existência ou não de um diretório especificado.
Por alguma razão, meu código não está funcionando e sempre retorna verdadeiro, mesmo que seja falso:
def directory_exists?(directory)
return false if Dir[directory] == nil
true
end
O que estou fazendo de errado?
Dir.exists?
não ser mais limpo do queFile.directory?
?Dir.exists?
é obsoleto, o usoDir.exist
Dir.exist?
Você também pode usar
Dir::exist?
assim:fonte
undefined method `exists?' for Dir:Class (NoMethodError)
. Além disso, a forma plural agora está obsoleta, use em.exist?
vez disso.Todas as outras respostas estão corretas, no entanto, você pode ter problemas se estiver tentando verificar o diretório no diretório inicial de um usuário. Certifique-se de expandir o caminho relativo antes de verificar:
fonte
Dir[]
retorna uma matriz, portanto nunca seránil
. Se você quiser fazer do seu jeito, você pode fazerque retornará
true
se não foi encontrado.fonte
Você poderia usar
Kernel#test
:obtém suas origens em https://ss64.com/bash/test.html, você notará que o bash
test
tem esse sinalizador-d
para testar se existe um diretório-d file True if file is a Directory. [[ -d demofile ]]
fonte