Хэш внутри файла YAML?
Я хочу включить хэш и список внутри файла YAML, который я разбираю с помощью следующей команды:
APP_CONFIG = YAML.load_file("#{RAILS_ROOT}/config/config.yml")
Мой файл YAML выглядит так:
feeds: [{:url => 'http://www.google.com', :label => 'default'}]
Но это, похоже, не работает.
Как я могу добиться такого?
Спасибо,
Юваль
EDIT: Извините, ребята. Я все еще не понимаю, как это сделать, и я подозреваю, что это отчасти из-за моей расплывчатой фразы. Я спросил более понятный, более широкий вопрос здесь. Спасибо!
Ответы
Ответ 1
Вы можете отметить это как
feeds:
-
url: 'http://www.google.com'
label: 'default'
Обратите внимание, что интервал здесь важен. "-" должен быть отступом одним пробелом (а не вкладкой), а за ним следует одно место. И url
и label
должны быть отступом двумя пробелами (также не табуляциями).
Дополнительно это может быть полезно: http://www.yaml.org/YAML_for_ruby.html
Ответ 2
Ответ на потолочный огонь, возможно, технически правильный, но он рекомендует использовать пробел в конце строки. Это подвержено ошибкам и не является хорошей практикой!
Вот как я это сделаю:
Создайте файл 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.
Ответ 3
Старый вопрос, но так как я был в подобном месте... Как сказал Джаспер, ответ "Потолок" правилен. Но вы также можете сделать
feeds:
- url: 'http://www.google.com'
label: 'default'
чтобы избежать необходимости полагаться на конечные пробелы после тире.