gpt4 book ai didi

ruby - 有没有办法在 Ruby YAML 文件中将 ruby​​ 类/模块常量指定为值

转载 作者:数据小太阳 更新时间:2023-10-29 08:37:46 24 4
gpt4 key购买 nike

我有一个 YAML 配置文件,我想在其中包含特定的 ruby​​ 类/模块常量而不是实际值。

例如,我想要“loglevel: Logger::DEBUG”,而不是在配置文件中放置“loglevel: 0”。

有没有办法让 YAML 解码或解析类或模块常量,如 Logger::DEBUG?

这就是我一直在玩的东西,但是看看 psych ruby​​ 代码,我没有看到任何可能支持它的东西。

配置.yml

日志级别:!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 加载后,我可以在我的代码中执行此操作,但我想确保我不遗余力,这已经变成了一个冗长的任务 ;-)。

最佳答案

不确定 YAML 方式,但最好不要使用 eval...

在 Ruby 2+ 中

Object.const_get 'Logger::DEBUG'

还是老派

def const_lookup const_name
const_name.split('::').inject(Object) do |rec, name|
rec.const_get(name)
end
end

const_lookup 'Logger::DEBUG'

关于ruby - 有没有办法在 Ruby YAML 文件中将 ruby​​ 类/模块常量指定为值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25474462/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com