小智 52
我有点迟到了,但我将留下一个示例实现,我将如何处理这个,以供将来参考.
如上所述,您通常希望允许通过文件和哈希进行配置.包含两种方式非常容易和轻松,所以你应该这样做.
在大多数情况下,这样的东西对我有用:
require 'yaml'
module MyGem
# Configuration defaults
@config = {
:log_level => "verbose",
:min => 0,
:max => 99
}
@valid_config_keys = @config.keys
# Configure through hash
def self.configure(opts = {})
opts.each {|k,v| @config[k.to_sym] = v if @valid_config_keys.include? k.to_sym}
end
# Configure through yaml file
def self.configure_with(path_to_yaml_file)
begin
config = YAML::load(IO.read(path_to_yaml_file))
rescue Errno::ENOENT
log(:warning, "YAML configuration file couldn't be found. Using defaults."); return
rescue Psych::SyntaxError
log(:warning, "YAML configuration file contains invalid syntax. Using defaults."); return
end
configure(config)
end
def self.config
@config
end
end
Run Code Online (Sandbox Code Playgroud)
一个额外的最佳实践是为所有配置键设置默认值(如上例所示).这样,您就可以让用户最终自由地配置您的库.
小智 5
如果您的gem包含一个可由用户以交互方式运行的命令,则最好在第一次运行时提示任何必要的详细信息.保存配置的好地方是在用户的主目录中作为点文件.
如果你的gem纯粹在其他代码中用作库,那么应该允许配置作为哈希或类似的传递.
| 归档时间: |
|
| 查看次数: |
14758 次 |
| 最近记录: |