出现错误时,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解决了这个问题.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...