如何知道FileUtils命令是否成功?

时间:2013-01-24 14:57:23

标签: ruby

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

我想做点什么:

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

我为FileUtils阅读了documentation,还阅读了“Getting executed command from ruby FileUtils”,但我无法弄清楚如何使用答案。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

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

如果您需要返回值,也许您唯一的选择是在ruby中运行命令,请查看this blog post