在YAML中存储信息

时间:2010-06-14 00:16:49

标签: ruby-on-rails ruby yaml

我浏览了YAML for ruby documentation并找不到答案。

我有几个员工的名单。每个人都有姓名,电话和电子邮件:

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 个答案:

答案 0 :(得分:2)

- name: john
  phone: 111
  email: a@b.com
- name: joe
  phone: 123
  email: b@a.org
- name: joan
  phone: 321
  email: c@a.net

输出是字符串键,而不是符号键,但如果真的有必要,您可以自己进行转换。

答案 1 :(得分:2)

请注意,Ruby 1.8.6附带的标准yaml是 NOT UTF / Unicode安全。

如果您要进行任何非ASCII测试,请使用Ruby 1.9 yaml或Ya2YAML gem。

此外,查看yaml输入应该是什么的最简单方法是创建(在Ruby irb中)数据结构的示例。然后使用.to_yaml对象类方法将其转换为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