如何在ruby rake中显式地失败任务?
比方说,我有这样的rakefile:
file 'file1' => some_dependencies do sh 'external tool I do not have control over, which sometimes fail to create the file' ??? end task :default => 'file1' do puts "everything's OK" end
现在,如果我没有代替???,我会得到OK消息,即使外部工具无法生成文件。 什么是正确的方法来通知耙,'文件1'任务失败,它应该中止(希望提出一个有意义的消息,如哪个任务失败) – 我现在能想到的唯一想法是提出一个例外,但那只是看起来不正确。
PS该工具始终返回0作为退出代码。
像使用其他Ruby脚本一样使用raise
或fail
方法( fail
是raise
的别名)。 该方法将一个string或exception作为参数,用作在脚本结束时显示的错误消息。 这也会导致脚本将值1返回给调用shell。 它在这里和其他地方记载。
您可以使用abort("message")
优雅地失败耙子任务。
它会将message
打印到标准输出并用代码1退出。
退出代码1在类Unix系统中是失败的。
有关详细信息,请参阅Kernel#abort 。