我有几个Nagios脚本继承了一个常见的NagiosCheck类。由于每个检查都有略微不同的getopts选项,我认为通过NagiosCheck类方法生成可用选项是最好的。但是我被卡住了......
这就是我调用方法的方法:
class CheckFoobar < NagiosCheck
...
end
check = CheckFoobar.new
check.generate_options(
['-H', '--hostname', GetoptLong::REQUIRED_ARGUMENT],
['-P', '--port', GetoptLong::REQUIRED_ARGUMENT],
['-u', '--url', GetoptLong::REQUIRED_ARGUMENT])
方法本身:
class NagiosCheck
...
def generate_options (*args)
options = []
args.each do |arg|
options << arg
end
parser = GetoptLong.new
options.each {|arg| parser.set_options(arg)}
end
end
然后解析器只存储最后一项:
p parser # => #<GetoptLong:0x00000000e17dc8 @ordering=1, @canonical_names={"-u"=>"-u", "--url"=>"-u"}, @argument_flags={"-u"=>1, "--url"=>1}, @quiet=false, @status=0, @error=nil, @error_message=nil, @rest_singles="", @non_option_arguments=[]>
的问候,
麦克
...关于stackoverflow的第一个问题。如果我做错了请告诉我,让我知道,以便我能够适应。
答案 0 :(得分:1)
generate_options方法太复杂了。 Getoptlong.new将数组数组作为参数。
class NagiosCheck
def generate_options (*args)
GetoptLong.new(*args)
end
end