2010-06-22 64 views
1

我遇到了一個奇怪的情況,在Ruby中刪除文件,代碼似乎報告正確,但物理文件沒有從我的硬盤中刪除。我可以在命令行上執行rm path/to/file - 工作。我甚至可以打通Rails的控制檯和File.safe_unlink文件,並且也適用,它只是在我的Rails應用程序是無法刪除的實際文件:刪除的文件沒有被從硬盤中刪除的紅寶石

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 

物理文件是一個Git回購協議中(該回購是存儲在/公共/系統/)任何陷阱與?我已經嘗試使用ruby-git gem使用它提供的rm命令來刪除文件,但是它也不會刪除文件。

我已經在測試過程中打開了文件的所有權限,但仍然沒有任何效果。我也用File.writable?(local_path)證實了這一點,它返回true。

任何想法,爲什麼它可以防止文件被刪除?

回答

1

你檢查了目錄中的權限?刪除是一個目錄寫操作,而不是文件寫操作。 (rm也會檢查文件權限,並詢問你是否真的想要這樣做,作爲禮節性,如果該文件是寫保護的;但如果該目錄不可寫,則不會拒絕。)

+0

好吧,我我想我只是面對自己。我從來不知道這是一個目錄級別的許可,謝謝! – 2010-06-22 20:14:41