在`OptionParse`中使用`program_name`

时间:2015-08-11 15:28:34

标签: ruby

我想试试OptionParse。我对如何使用program_name=感到困惑。来自文档:

  

program_name[W]:   要在错误消息和默认横幅中发出的程序名称,默认为$0

我以为我可以像这样使用它:

OptionParser.new do |opts|
  opts.program_name = 'xxxx'
  opts.on('-i', '--int N', OptionParser::DecimalInteger,
      '....'
  ) { |v| ... }

我预计,如果我使用-i选项错误地调用没有整数的程序,我会看到一条错误消息,报告xxxx作为程序名称。然而情况并非如此。我是以错误的方式使用program_name=,还是我误解了这个属性的目的?

1 个答案:

答案 0 :(得分:1)

您必须使用set_program_name方法(请参阅OptionParser)。 program_name成员用于检索当前名称,默认设置为$0。使用program_name设置横幅的更正代码将是:

OptionParser.new do |opts|
  opts.set_program_name('xxxx')
  opts.banner = "Usage: #{opts.program_name} .."
  opts.on('-i', '--int N', OptionParser::DecimalInteger,
      '....'
  ) { |v| ... }