我有一个 YAML 配置文件,我想在其中包含特定的 ruby 类/模块常量而不是实际值。
例如,我想要“loglevel: Logger::DEBUG”,而不是把“loglevel: 0”放在配置文件中。
有没有办法让 YAML 解码或解析像 Logger::DEBUG 这样的类或模块常量?
这就是我一直在玩的东西,但是看着 psych ruby 代码,我看不到任何可能支持这一点的东西。
配置.yml
loglevel: !ruby/class:fixnum Logger::DEBUG
在 irb
irb> 需要“记录器”
irb> config = YAML.load_file('config.yml')
config['loglevel'] 包含“Logger::DEBUG”作为字符串而不是实际值。
我可以像这样对其进行评估:
irb> p eval config['loglevel'] 0 ==> 0
我只是想知道是否有办法让 YAML 评估它?在进行 YAML 加载后,我可以在我的代码中执行此操作,但我想确保我不遗余力,这已经变成了一个漫长的任务 ;-)。