2012-03-02 5 views
0

Я хочу сохранить некоторую конфигурационную информацию о нескольких приложениях, чтобы я мог создать «приложение». Я хранить данные в массив, который выглядит следующим образом -Как правильно настроить to_yaml

[["page_view", {"path"=>"somepath/asdf/asdf", "name"=>"Page View"}], ["outage_impact", {"path"=>"newpath/asdf/asdf", "name"=>"Outage Impact"}]] 

, но когда я использую to_yaml на этом массиве я получаю этот выход:

--- 
- - page_view 
    - path: somepath/asdf/asdf 
    name: Page View 
- - outage_impact 
    - path: newpath/asdf/asdf 
    name: Outage Impact 

В идеале я хочу что-то больше, как это:

page_view 
    path: somepath/af/asdf 
    name: blah 
outage_impact 
    name: blah 
    path: adsf/adsf/asdf 

Я попытался найти дополнительную информацию по методу to_yaml, но это было немного и далеко. Я думаю, что мой массив, возможно, придется отформатировать по-разному, но я догадывался и проверял какое-то время безрезультатно.

Должен ли я вообще использовать метод to_yaml или будет работать другой метод?

+0

Вроде бы сериализации что у тебя есть. Вам понадобится «:» после просмотра page_view и output_impact в ожидаемом выходе. Если вы хотите последний, могли бы ваши исходные данные быть похожими на {"page_view": {"path": "somepath/...", ...}, "outage_impact": {...}} – clarkevans

ответ

1

Преобразование его в хэш, а затем с помощью to_yaml даст аналогичный вывод на вашем примере (но с --- в начале)

arr = [["page_view", {"path"=>"somepath/asdf/asdf", "name"=>"Page View"}], ["outage_impact", {"path"=>"newpath/asdf/asdf", "name"=>"Outage Impact"}]] 

puts Hash[*arr.flatten].to_yaml 

дает:

--- 
page_view: 
    path: somepath/asdf/asdf 
    name: Page View 
outage_impact: 
    path: newpath/asdf/asdf 
    name: Outage Impact 
+0

Точно, что я нужно, спасибо! – Josh

Смежные вопросы