问题描述
|
我有几个Nagios脚本,它们继承了一个常见的NagiosCheck类。由于每个检查的getopts选项都略有不同,因此我认为最好是通过NagiosCheck类方法生成可用选项。但是我被困住了...
这就是我所说的方法:
class CheckFoobar < NagiosCheck
...
end
check = CheckFoobar.new
check.generate_options(
[\'-H\',\'--hostname\',GetoptLong::REQUIRED_ARGUMENT],[\'-P\',\'--port\',[\'-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的第一个问题。如果我做错了任何事情,请多包涵,并让我知道,以便我能够适应。
解决方法
generate_options方法太复杂。 Getoptlong.new将数组数组作为参数。
class NagiosCheck
def generate_options (*args)
GetoptLong.new(*args)
end
end