Как я могу сослаться на другое поле в приборе YAML (возможно, используя ERB)? - PullRequest
0 голосов
/ 05 февраля 2019

Я создаю светильники YAML для приложения Rails, и значения нескольких ключей связаны между собой.Есть ли способ динамически установить эти значения на основе предыдущего значения?

Я рассмотрел использование якорей и ссылок YAML, но насколько я понимаю, они работают только для целых узлов (пример 2 ниже).

Я проверил документацию по приборам , но похоже, что я могу ссылаться только на идентификатор прибора (с Fixtures.identify(:reginald)), а не на конкретное значение.

Я предполагал, что ERB будетпуть, но я не могу понять, как ссылаться на другие значения YAML из Ruby.Чтобы это работало, мне пришлось создать блок и передать переменные (пример 3 ниже).

# events.yml

# Example 1 - what I currently have. It works but there is a fair bit of repetition for ~25 entries
event1:
  location: paris
  number: 34
  date: 2005-05-21
  url: "http://www.example.com/paris/subfolder/events?eventNumber=34

# Example 2 - I was hoping to be able to reference previous values by key... anchors would work if they could be interpolated somehow:
event2:
  location: &location london
  number: &number 17
  date: 2008-02-09
  url: "http://www.example.com/{{*location}}/subfolder/events?eventNumber={{*number}}

# Example 3 - This is the best I could come up with but I don't think it's an improvement to have ~25 of these blocks
<% ['paris', 46].map do |location, number| %>
event3:
  location: <%= location %>
  number: <%= number %>
  date: 2005-08-13
  url: "http://www.example.com/<%= location %>/subfolder/events?eventNumber=<%= number %>
<% end %>

Есть ли какие-то другие подходы, которые мне не хватает?

...