带有erb的YAML没有解析

kir*_*lev 13 ruby yaml ruby-on-rails erb

为什么这个yaml文件不会解析?

---
<% sensor_types = YAML.load_file('db/seed-fixtures/sensor_type.yml') %>
<% sensor_types.each do |sensor_type| %>
sensor<%= sensor_type['id'] %>:
  id: <%= sensor_type['id'] %>
  title: <%= sensor_type['title'] %>
  unit: "<%= sensor_type['unit'] %>"
  valid_min: <%= sensor_type['valid_min'] %>
  valid_max: <%= sensor_type['valid_max'] %>
  codename: <%= sensor_type['codename'] %>
  scale_base_ten_exponent: <%= sensor_type['scale_base_ten_exponent'] %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

这个文件用于我的测试中的灯具,它是由fixpec目录中的rspec加载的.

当我尝试它时,我得到:"在第4行第28列(Psych :: SyntaxError)的上下文中不允许映射值"

Dim*_*tri 32

您无法像基本YAML文件一样加载包含ERB的YAML文件.看看这篇文章.

您可以做的是(在规范初始化程序或之前的挂钩中):

FIXTURE_CONFIG = YAML.load(ERB.new(File.read("#{Rails.root}/path_to_your_file.yml.erb")).result)
Run Code Online (Sandbox Code Playgroud)

然后在测试中使用此变量.

  • 我正在将这个YAML文件用于灯具,所以它实际上是在您链接的帖子中所述的ERB渲染.但是你的代码帮助我调试了文件并发现问题与我正在加载的源yaml有关.谢谢. (2认同)