假设我有一个这样的耙子:

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消息.通知rake"file1"任务已经失败并且应该中止(希望给出一条有意义的消息——比如哪个任务失败了)——我现在唯一能想到的是在那里引发一个异常,但这似乎并不正确.

另外,该工具总是返回0作为退出代码.

推荐答案

像对待任何其他Ruby脚本一样使用raisefail方法(failraise的别名).此方法将字符串或异常作为参数,用作脚本终止时显示的错误消息.这还会导致脚本将值1返回给调用shell.它被记录在here和其他地方.

Ruby相关问答推荐

当 node 名称是/包含整数时,使用 Nokogiri 解析非 XML 文档

如何在 rspec 中使用 `eq` 匹配器和 `hash_include` 匹配器来获取哈希数组

RSpec 是否有 python 类似功能来做 TDD?

在 Ruby 中,rescue语句可以嵌套在哪些 struct 中

Python 正则表达式是否等同于 Ruby 的原子分组?

Ruby:拆分,然后删除前导/尾随空格?

如何在 Ruby 中初始化 Hash 中的数组

判断 Ruby Gem 的可用性

有没有比 Rspec 的 `should_receive` 更少干扰的替代方法?

将参数传递给erb视图

Rails - create and create!

警告! PATH 设置不正确,通常这是由 shell 初始化文件引起的

为什么在 ruby​​ / rails / activerecord 中并不总是需要 self ?

如何从 SystemStackError 中获取回溯:堆栈级别太深?

如何验证 RSpec 中的退出和中止?

Ruby 数组中的奇数(或偶数)条目

Ruby 1.9 哈希,键中有破折号

如何在Ruby中获取给定月份的天数,占年份?

使用正则表达式进行 Ruby Electron邮件验证

Ruby:如何将数组数组连接成一个