erb を含む YAML が解析されない
概要
この 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 %>
このファイルはテストのフィクスチャに使用され、rspec によってフィクスチャ ディレクトリからロードされます。
試してみると、「このコンテキストの行 4 列 28 ではマッピング値は許可されていません (Psych::SyntaxError)」というメッセージが表示されます。
解決策
基本的な YAML ファイルのように、ERB を含む YAML ファイルをロードすることはできません。この投稿をチェックしてください。
代わりにできることは次のとおりです (仕様初期化子または before フックで)。
FIXTURE_CONFIG = YAML.load(ERB.new(File.read("#{Rails.root}/path_to_your_file.yml.erb")).result)
そして、この変数をテストで使用します。