[ruby] 주어진 디렉토리가 Ruby에 존재하는지 확인하는 방법

지정된 디렉토리의 존재 여부에 따라 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::exist?과 같이 사용할 수도 있습니다 .

Dir.exist?('Directory Name')

true‘Directory Name’이 디렉토리인지 여부를 반환 합니다 false. 1


답변

다른 모든 대답은 맞지만 사용자의 홈 디렉토리에서 디렉토리를 확인하려고하면 문제가있을 수 있습니다. 확인하기 전에 상대 경로를 확장했는지 확인하십시오.

File.exists? '~/exists'
=> false
File.directory? '~/exists'
=> false
File.exists? File.expand_path('~/exists')
=> true


답변

File.exist?("directory")

Dir[]배열을 반환하므로 결코 그렇지 않습니다 nil. 당신이 당신의 방식으로 그것을하고 싶다면, 당신은 할 수 있습니다

Dir["directory"].empty?

이는 반환 true이 경우 되지 않았습니다 발견했다.


답변

당신은 사용할 수 있습니다 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 ]]


답변