Хранение информации внутри YAML - PullRequest
0 голосов
/ 14 июня 2010

Я просмотрел YAML для документации по рубину и не смог найти ответ.

У меня есть список из нескольких сотрудников. У каждого есть имя, телефон и адрес электронной почты как таковой:

Employees:
    Name | Phone | Email
    john   111     a@b.com
    joe    123     b@a.org
    joan   321     c@a.net

Как бы я записал вышеупомянутую информацию в YAML, чтобы получить следующий вывод ruby?

employees = [ {:name => 'john', :phone => '111', :email => 'a@b.com'}, {:name => 'joe', :phone => '123', :email => 'b@a.org'}, {:name => 'joan', :phone => '321', :email => 'c@a.net'} ]

Вот как я анализирую файл YAML:

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

Спасибо!

Ответы [ 2 ]

2 голосов
/ 14 июня 2010

Обратите внимание, что стандартный yaml, который поставляется с Ruby 1.8.6, НЕ UTF / Unicode safe.

Используйте Ruby 1.9 yaml или Ya2YAML gem, если у вас будет какой-либо тест, не связанный с ASCII.

Кроме того, самый простой способ узнать, каким должен быть ввод yaml, - это создать (в Ruby irb) пример вашей структуры данных. Затем превратите его в текст yaml, используя метод класса объекта .to_yaml. Например,

require 'yaml'
# create your structure
a = [{'name' => "Larry K", 'age' => 24,
     'job' => {'fulltime' => true, 'name' => 'engineer'}}]
a.to_yaml

=> "--- \n- name: Larry K\n  job: \n    name: engineer\n    fulltime: true\n  age: 24\n"

# then substitute line breaks for the \n:
--- 
- name: Larry K
  job: 
    name: engineer
    fulltime: true
  age: 24
2 голосов
/ 14 июня 2010
- name: john
  phone: 111
  email: a@b.com
- name: joe
  phone: 123
  email: b@a.org
- name: joan
  phone: 321
  email: c@a.net

Вывод - строковые ключи, а не символьные ключи, но вы можете сделать это преобразование самостоятельно, если действительно необходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...