【问题标题】:Storing information inside YAML在 YAML 中存储信息
【发布时间】:2023-03-09 17:18:02
【问题描述】:

我查看了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")

谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby yaml


    【解决方案1】:
    - name: john
      phone: 111
      email: a@b.com
    - name: joe
      phone: 123
      email: b@a.org
    - name: joan
      phone: 321
      email: c@a.net
    

    输出是字符串键,而不是符号键,但如果确实需要,您可以自己进行转换。

    【讨论】:

    • 另外,我需要将它嵌套在APP_CONFIG['employees'] 下——我会将所有内容缩进两个空格吗?
    【解决方案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
    

    【讨论】:

    • 或者直接说puts a.to_yaml然后复制粘贴;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-05
    • 2011-09-30
    • 2021-07-26
    相关资源
    最近更新 更多