2012-03-02 129 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