Подтвердить что ты не робот

Хэш внутри файла YAML?

Я хочу включить хэш и список внутри файла YAML, который я разбираю с помощью следующей команды:

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

Мой файл YAML выглядит так:

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

Но это, похоже, не работает. Как я могу добиться такого?

Спасибо, Юваль


EDIT: Извините, ребята. Я все еще не понимаю, как это сделать, и я подозреваю, что это отчасти из-за моей расплывчатой ​​фразы. Я спросил более понятный, более широкий вопрос здесь. Спасибо!

4b9b3361

Ответ 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'

чтобы избежать необходимости полагаться на конечные пробелы после тире.