web-dev-qa-db-ja.com

YAMLファイル内でハッシュしますか?

次のコマンドで解析しているYAMLファイル内にハッシュとリストを含めたいと思います。

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

私のYAMLファイルは次のようになります:

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

しかし、これはうまくいかないようです。どうすればそのようなことを達成できますか?

ありがとう、ユヴァル


編集:すみません、みんな。これを行う方法についてはまだ不明であり、それは私のやや漠然とした言い回しが原因の一部であると思われます。私はより言い換えられた、より広い質問をしました ここ 。ありがとうございました!

26
Yuval Karmi

このようにマークアップできます

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

ここでは間隔が重要であることに注意してください。 「-」は、(タブではなく)単一のスペースでインデントし、その後に単一のスペースを続ける必要があります。また、urllabelは2つのスペース(タブでもない)でインデントする必要があります。

さらに、これは役立つかもしれません: http://www.yaml.org/YAML_for_Ruby.html

30
Ceilingfish

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キーを格納するための好ましい方法のようです。

14
jpoppe

古い質問ですが、私は同じような場所にいたので...ジャスパーが指摘したように、Ceilingfishの答えは正しいです。しかし、あなたもすることができます

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

ダッシュの後の末尾の空白に依存する必要がないようにします。

6
estan