我在删除 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) 确认了这一点。
有什么想法为什么会阻止文件被删除?