如何让YAML解析Ruby代码并生成Date.today实际值?
如何让YAML文件中的Ruby ERB代码执行并返回实际值?
普通YAML加载工具不会自动解析ERB标签(比如<%= Date.today %>),需要先通过ERB渲染文件内容,再解析YAML。具体实现步骤如下:
- 引入Ruby的
yaml和erb标准库 - 读取YAML文件的原始内容
- 用ERB渲染内容,执行其中的Ruby代码
- 将渲染后的内容解析为YAML对象
示例代码:
require 'yaml' require 'erb' # 替换为你的YAML文件实际路径 file_path = 'your_file.yaml' # 读取文件并执行ERB渲染 rendered_content = ERB.new(File.read(file_path)).result # 解析渲染后的内容 parsed_data = YAML.load(rendered_content) # 输出结果,此时time1会是Date.today的实际值 p parsed_data
执行后,parsed_data里的time1字段会返回当前日期的实际值,而非原始的ERB字符串。
注意:ERB会执行文件内的所有Ruby代码,务必确保YAML文件来源安全,避免执行恶意代码。
内容的提问来源于stack exchange,提问作者Preethi Kumar
相关产品推荐
相关产品推荐

