2012-03-02 163 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 2012-03-02 17:17:22

回答

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 2012-03-02 18:50:53