案例:开发环境日志级别为DEBUG,生产环境日志级别为INFO。如果环境 == 开发,我想使用每个默认日志配置并仅覆盖级别。
问题:可以覆盖第一级配置,但不能覆盖子级别。
考虑示例代码:
#file: config.rb
default = Configuration.for('default'){
log {
file '/tmp/foo.log'
level 'WARN'
freq 'daily'
}
}
development = Configuration.for( 'development', default) {
log {
level 'DEBUG'
}
}
在主文件中,我像这样使用上面的代码
# main.rb
require 'config.rb'
$CONFIG = Configuration.for $DEV_ENV # either ('default' || 'development')
p $CONFIG.log.freq
我收到一个方法丢失错误:
`undefined method `freq' for #<Configuration:0x00000003a65d80> (NoMethodError)`
我唯一的(丑陋的)解决方案是将文件和频率值恢复为默认值,如下所示:
log {
file default.log.file
level 'DEBUG'
freq default.log.freq
}
哎呀!讨厌!
还有其他建议吗?我也尝试使用 SettingsLogic 和 Configatron 来实现类似的东西,但无济于事。这里有 Ruby 的三个顶级配置 gem。我需要自己做吗??这真的是一个奇特的例子吗?
希望您的反馈或建议。