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 存储库中(存储库存储在 /public/system/ 中)有什么问题吗?我尝试使用 ruby​​-git gem 使用它提供的 rm 命令删除文件,但这也不会删除文件。

我在测试期间打开了文件的所有权限,但仍然没有任何效果。我还通过返回 true 的 File.writable?(local_path) 确认了这一点。

有什么想法为什么会阻止文件被删除?

4

1 回答 1

1

你检查过目录的权限吗?删除是目录写操作,不是文件写操作。(rm还将检查文件权限并询问您是否真的要这样做,出于礼貌,文件是否受写保护;但如果目录不可写,则完全拒绝。)

于 2010-06-22T20:12:52.750 回答