出现错误时,Ruby / Thor退出状态

前端之家收集整理的这篇文章主要介绍了出现错误时,Ruby / Thor退出状态前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是Thor(和 Ruby)的新手,我正在考虑在构建脚本中使用它,因为据说它可以替代Rake(因此对Make).
但经过短暂的试用后,我对它返回的错误状态感到困惑.我很快就浏览了维基,但没有看到任何提及.

只有第一个“简单示例”,test.thor:

class Test < Thor
  desc "example","an example task"
  def example
    puts "I'm a thor task!"
  end
end

版本号:

eruve>thor version
Thor 0.18.1

我尝试了以下,故意错误的命令:

eruve>ruby --version; thor test:example badarg; echo exit status: $?

ruby 2.0.0p195 (2013-05-14 revision 40734) [x86_64-darwin10.8.0]
ERROR: thor example was called with arguments ["badarg"]
Usage: "thor test:example".
exit status: 0

所以,有一个错误,但它仍以状态0退出…意味着我宁愿不在(非ruby)脚本中使用它,否则脚本将继续运行,即使它应该终止.后续错误可能难以分析.

我必须遗漏一些东西,因此我的问题是:

>如果出现错误(配置文件等),是否有一种简单的方法可以默认获得非零状态?
>如果没有,我应该做些什么才能做到正确?

谢谢.

解决方法

我知道这已经回答了,但我认为这是一个更好的答案所以我认为无论如何我都会贡献它.

Thor有一种方法可以用来改变行为,因此错误会导致退出代码非零.它没有很好地记录(恕我直言).

class Test < Thor
  def self.exit_on_failure?
    true
  end

  desc "example","an example task"
  def example
    puts "I'm a thor task!"
  end
end

这个的默认值是莫名其妙的错误.我不知道为什么有人会希望它表现得像个人一样. Thor issue 244解决了这个问题.

猜你在找的Ruby相关文章