지정된 디렉토리의 존재 여부에 따라 Subversion URL을 자동으로 체크 아웃하거나 업데이트하는 스크립트를 작성하려고합니다.
어떤 이유로 든 내 코드가 작동하지 않고 false 인 경우에도 항상 true를 반환 합니다 .
def directory_exists?(directory)
return false if Dir[directory] == nil
true
end
내가 뭘 잘못하고 있죠?
지정된 디렉토리의 존재 여부에 따라 Subversion URL을 자동으로 체크 아웃하거나 업데이트하는 스크립트를 작성하려고합니다.
어떤 이유로 든 내 코드가 작동하지 않고 false 인 경우에도 항상 true를 반환 합니다 .
def directory_exists?(directory)
return false if Dir[directory] == nil
true
end
내가 뭘 잘못하고 있죠?
답변:
당신이 찾고있는 파일이 있는지 여부를 중요한 경우 디렉토리 뿐 아니라 파일, 당신은 사용할 수 있습니다 File.directory?
또는 Dir.exist?
. 파일이 존재하고 디렉토리 인 경우에만 true를 리턴합니다.
게다가, 메소드를 작성하는보다 관용적 인 방법은 Ruby가 메소드 내에서 마지막 표현식의 결과를 자동으로 리턴한다는 사실을 이용하는 것입니다. 따라서 다음과 같이 작성할 수 있습니다.
def directory_exists?(directory)
File.directory?(directory)
end
이 경우 방법을 사용할 필요는 없습니다.
Dir.exists?
보다 깨끗하지 File.directory?
?
Dir.exists?
더 이상 사용되지 않습니다Dir.exist
Dir.exist?
다음 Dir::exist?
과 같이 사용할 수도 있습니다 .
Dir.exist?('Directory Name')
true
'Directory Name'이 디렉토리인지 여부를 반환 합니다false
. 1
undefined method `exists?' for Dir:Class (NoMethodError)
. 또한 복수형은 더 이상 사용되지 않으며 .exist?
대신 사용하십시오.
당신은 사용할 수 있습니다 Kernel#test
:
test ?d, 'some directory'
그것은 https://ss64.com/bash/test.html 에서 유래합니다.
bash test
에는 -d
디렉토리가 존재하는지 테스트하기 위해이 플래그 가 있음을 알 수 있습니다
-d file True if file is a Directory. [[ -d demofile ]]