【问题标题】:Hash inside YAML file?在 YAML 文件中散列?
【发布时间】:2010-06-13 21:54:39
【问题描述】:

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

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

我的 YAML 文件如下所示:

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

但这似乎不起作用。 我将如何实现这样的目标?

谢谢, 尤瓦尔


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

【问题讨论】:

    标签: ruby-on-rails ruby yaml


    【解决方案1】:

    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 键的首选方式。

    【讨论】:

    • 但这真的会产生他所要求的吗?我认为他希望“提要”成为哈希列表,而不仅仅是哈希。我有点在同一个地方,也不喜欢需要尾随空间的脆弱方法。有什么想法吗?
    • 没关系。我想到了。将发布我自己对这个问题的答案。
    【解决方案2】:

    你可以这样标记

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

    注意间距在这里很重要。 “-”必须缩进一个空格(不是制表符),后跟一个空格。并且urllabel 必须缩进两个空格(也不是制表符)。

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

    【讨论】:

      【解决方案3】:

      老问题,但由于我处于类似的位置......就像贾斯珀指出的那样,Ceilingfish 的答案是正确的。但你也可以这样做

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

      避免必须依赖破折号后的尾随空格。

      【讨论】:

        猜你喜欢
        • 2014-03-30
        • 1970-01-01
        • 2020-07-31
        • 2011-01-17
        • 2019-02-27
        • 2012-06-12
        • 1970-01-01
        • 1970-01-01
        • 2019-03-31
        相关资源
        最近更新 更多