2010-06-22 3 views
1

Ruby에서 파일을 삭제하는 데 이상한 상황이 발생하지만 코드가 올바르게보고되지만 실제 파일이 하드 드라이브에서 제거되지 않습니다. 내가 할 수있는 rm path/to/file 명령 줄에 - 그 작품. 난 레일 콘솔과 File.safe_unlink 파일을 열 수 있습니다 그것은 또한 작동합니다, 그냥 내 레일 내에서의 IT는 실제 파일 삭제 실패되는 앱 (삭제 된 파일이 Ruby에서 HDD에서 제거되지 않음

def destroy 
    Rails.logger.debug local_path #=> /Users/ryan/.../public/system/.../file.jpg 
    Rails.logger.debug File.exist?(local_path) #=> true 
    File.safe_unlink(local_path) 
    Rails.logger.debug File.exist?(local_path) #=> false 
    # yet the physical file actually STILL exists! 
end 

물리적 파일이 망할 놈의 repo 내를 repo는/public/system/내에 저장되어 있습니다). 내가 제공하는 rm 명령을 사용하여 파일을 삭제하려면 루비 - 망할 보석을 사용해 보았지만 그 중 하나를 삭제하지 않습니다.

테스트하는 동안 파일에 대한 모든 사용 권한을 열었으며 아무 효과가 없습니다. 또한 File.writable? (local_path)를 true로 반환하여이를 확인했습니다.

파일을 삭제하지 못하게 한 이유는 무엇입니까?

답변

1

디렉토리에 대한 사용 권한을 확인 했습니까? 삭제는 디렉토리 쓰기 작업이며 파일 쓰기 작업은 아닙니다. (rm도 파일 파마를 검사하고 파일이 쓰기 보호되어있는 경우 예의를 지내며 요청할 수 있지만 디렉토리가 쓰기 불가능한 경우 거부합니다.

+0

알겠습니다. 내가 방금 얼굴을 마주 보았다고 생각해. 디렉토리 수준의 권한이라는 것을 알지 못했습니다. 감사합니다! –

관련 문제