Ruby系统()调用的Rake任务返回值

时间:2014-05-14 23:38:38

标签: ruby rake rake-task rake-test

我有一个Rake任务,看起来如下所示。我正在尝试做的是运行系统命令,并返回其错误值。在返回之前,我想显示一条消息,上面写着“[OK]”或“[FAILED]”。

使用此代码,Rake每次都会返回成功。

如何让Rake任务返回正确的错误值?

task :build do
  status = system BUILD_SHELL_COMMAND
  puts status ? "[OK]" : "[FAILED]"
  status
end

1 个答案:

答案 0 :(得分:1)

似乎没有办法从rake任务中指定“返回值”。如果system()方法失败,任务应该失败。

执行此操作的标准方法是使用Rake的sh实用程序方法:

task :build do
  sh BUILD_SHELL_COMMAND
end

要显示错误/成功消息,但对于相关案例,以下情况不起作用:

task :build do
  sh BUILD_SHELL_COMMAND or fail “[FAILED]”
  puts “[OK]"
end

因为一旦shell命令失败,它就不会显示失败消息(实际上这将是一个更长的非平凡消息:),这就是我们想要的。

这有效:

task :build do
  system BUILD_SHELL_COMMAND or fail “[FAILED]”
  puts “[OK]"
end