OptionParser无缘无故地抛出“缺失论据”

时间:2013-04-16 19:10:41

标签: ruby exception optparse

我只有一个可能的选项,它被解析如下:

  def parse_options
    options = {}
    options[:markdown] = false
    OptionParser.new do |opts|
      opts.on('-md', '--markdown', 'Use Markdown Syntax') do
        options[:markdown] = true
      end
    end.parse!
  end

如您所见,该选项不需要任何参数。我发现甚至更奇怪的是这是有效的:

command -md

但这引发了异常:

command --markdown

in `parse_options': missing argument: --markdown (OptionParser::MissingArgument)

有什么想法吗?我阅读了doc和多个例子,但无法弄清楚。

1 个答案:

答案 0 :(得分:4)

您不能使用这样的双字母开关。与

opts.on('-m', '--markdown', 'Use Markdown Syntax') do

它工作正常。请参阅OptionParser documentation

下的简短样式切换