我有一个使用 OptionParser 的脚本,我想为该程序添加配置文件,该文件将具有 option = value
格式和 # comments
。有没有办法让 OptionParser 解析文件或某些类能够使用 OptionParser 规则和配置文件开关?
谢谢。
最佳答案
据我所知,对于您所要求的内容没有内置支持,但这是可以理解的,因为有很多方法可以实现它。我将使用 default_options 哈希 + YAML 配置文件:
default_options = {
:name => nil,
:verbose => false,
}
options = default_options
OptionParser.new do |opts|
opts.banner = "Usage: example.rb [options]"
opts.on("-v", "--verbose", "Run verbosely") do
options[:verbose] = true
end
opts.on("-n", "--name NAME", "Set name") do |name|
options[:name] = name
end
opts.on("-f", "--configfile PATH", String, "Set config file") do |path|
options.merge!(Hash[YAML::load(open(path)).map { |k, v| [k.to_sym, v] }])
end
end.parse!
p options
配置 YAML 示例:
# config.yml
verbose: true
name: name_fromconf
这就是结果(覆盖示例):
$ ruby example.rb -f config.yml -n "hello"
{:name=>"hello", :verbose=>true}
关于Ruby:配置文件解析器与OptionParser结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4375530/