代码之家  ›  专栏  ›  技术社区  ›  Yuval Karmi

yaml文件中的哈希?

  •  24
  • Yuval Karmi  · 技术社区  · 16 年前

    我想在使用以下命令解析的yaml文件中包含哈希和列表:

    APP_CONFIG = YAML.load_file("#{RAILS_ROOT}/config/config.yml")
    

    我的yaml文件如下:

    feeds: [{:url => 'http://www.google.com', :label => 'default'}]
    

    但这似乎行不通。 我怎样才能达到这样的目标呢?

    谢谢, 尤维尔


    编辑:对不起,伙计们。我仍然不清楚如何做到这一点,我怀疑部分是因为我的措辞有些含糊。我问了一个措辞更好、更宽泛的问题 here . 谢谢您!

    3 回复  |  直到 8 年前
        1
  •  29
  •   Ceilingfish    16 年前

    你可以这样做

    feeds:
     - 
      url: 'http://www.google.com'
      label: 'default'
    

    注意这里的间距很重要。”-“必须缩进一个空格(不是制表符),后跟一个空格。和 url 和; label 必须缩进两个空格(也不是制表符)。

    此外,这可能会有所帮助: http://www.yaml.org/YAML_for_ruby.html

        2
  •  14
  •   Alex Pan Umair Shahbaz    8 年前

    Ceilingfish的答案也许在技术上是正确的,但他建议在行尾使用空白。这很容易出错,不是一个好的实践!

    我就是这样做的:

    创建包含以下内容的settings.yaml文件:

    ---
    feeds:
      :url: 'http://www.google.com'
      :label: 'default'
    

    这将在加载yaml文件后创建以下哈希:

    irb(main):001:0> require 'yaml'
    => true
    irb(main):002:0> YAML.load_file('settings.yaml')
    => {"feeds"=>{:url=>"http://www.google.com", :label=>"default"}}
    irb(main):003:0> 
    

    在本例中,我也使用符号,因为这似乎是在Ruby中存储Ruby键的首选方法。

        3
  •  5
  •   estan    11 年前

    老问题,但既然我在一个相似的地方…正如贾斯珀指出的,天花板鱼的回答是正确的。但你也可以

    feeds:
     - url: 'http://www.google.com'
       label: 'default'
    

    为了避免在破折号后依赖尾随空格。