Thor会在Ruby命令行应用程序中抱怨拼写错误的选项吗?

Ben*_*kes 5 ruby command-line-arguments thor

是否可以让Thor抱怨拼写错误/无法识别的命令行选项?

例:

maid --slient  # Oops!  Misspelled.  It should give a warning or usage info.
maid --silent  # Do the behavior I programmed for the "silent" option.
Run Code Online (Sandbox Code Playgroud)

Thor真的很不错,但如果它只是忽略输入它不知道如何处理它对我没有太大帮助.Maid还可以选择指定Maid规则的文件,如下所示:

maid --rules=rules.rb  # Good
maid -r rules.rb       # Short version
maid rules.rb          # Oops!  That's not valid.  It should give a warning or usage info.
Run Code Online (Sandbox Code Playgroud)

在上述两种情况下,我能做些什么来让Thor抱怨?

Maid gem的代码在GitHub上,网址http://github.com/benjaminoakes/maid

Ben*_*kes 6

我收到 Yehuda Katz 的推文.(再次感谢!)这是解决方案:

class YourApp < Thor
  check_unknown_options!
  # ...
end
Run Code Online (Sandbox Code Playgroud)

我测试并将其添加到我的项目中.这是新的行为:

$ maid --slient
Unknown switches '--slient'

$ maid rules.rb
Could not find task "rules.rb".
Run Code Online (Sandbox Code Playgroud)

请参阅GitHub上的完整代码.