10

我没有看到 FileUtils 命令的任何返回值。

我想做类似的事情:

really=(gets.chomp=="y")
if really
  success = FileUtils.rm_rf "./PROJECT_#{@name}" #does not work
end
puts "./PROJECT_#{@name} deleted" if success

我阅读了FileUtils 的文档,还阅读了“从 ruby​​ FileUtils 获取执行的命令”,但我不知道如何使用答案。

4

2 回答 2

1

根据文档(http://ruby-doc.org/stdlib-1.9.3/libdoc/fileutils/rdoc/FileUtils.html#method-c-rm_rf)调用#rm_rf不会回显与他们的任务相关的任何内容正在服用。#rm_rf 实际上使用选项 :force => true 调用 #rm_r。此选项使该方法可以忽略 StandardError 异常(然后它会向您传达有关操作或它为什么不工作的信息)。现在,回到它失败的原因。正如有人已经评论过的那样,尝试使用选项:secure => true。更多关于这里的信息:http ://ruby-doc.org/stdlib-1.9.3/libdoc/fileutils/rdoc/FileUtils.html#method-c-remove_entry_secure 。这可能是权限问题。

于 2013-01-25T15:09:44.860 回答
0

我认为您需要检查返回值:

irb(main):006:0> FileUtils.rm_rf 'test'
=> ["test"]
irb(main):007:0> 

并检查在目录不存在的情况下是否引发异常。

如果您需要返回值,也许您唯一的选择是在 ruby​​ 中运行命令,请查看此博客文章

于 2013-01-24T17:57:34.713 回答