已删除的文件未在Ruby中从HDD中删除

时间:2010-06-22 19:57:36

标签: ruby file delete-file

我在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命令删除文件,但这也不会删除文件。

我在测试过程中打开了文件的所有权限,但仍无效。我也用File.writable确认了这一点?(local_path)返回true。

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

1 个答案:

答案 0 :(得分:1)

您是否检查了目录的权限?删除是目录写操作,而不是文件写操作。 (rm还将检查文件权限,并询问您是否真的想要这样做,如果文件是写保护的话,这是礼貌的;但如果目录不可写,那么它就会拒绝。)