我有一个类似于以下内容的 Rake 任务。我正在尝试运行系统命令,并返回其错误值。在返回之前,我想显示一条消息,例如“[OK]”或“[FAILED]”。
使用此代码,Rake 每次都会返回成功。
如何让 Rake 任务返回正确的错误值?
task :build do
status = system BUILD_SHELL_COMMAND
puts status ? "[OK]" : "[FAILED]"
status
end
似乎没有办法从 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