YAML条目可以使用同一文件中的条目子集吗?

时间:2010-08-21 01:12:25

标签: ruby-on-rails ruby yaml

我在我的rails应用程序中使用YAML文件进行配置,文件中的一些条目是未来条目的子集,例如 -

  

域名:domain.com
  名称:杰克
  电子邮件:jack@domain.com

为了提高效率,在YAML中可能会出现这种情况吗?

  

域名:domain.com
  名称:杰克
  电子邮件:jack @ $ {domain}

2 个答案:

答案 0 :(得分:0)

YAML有anchors,但您不能像在问题中那样使用它们作为变量。您可以通过后处理步骤来完成。说你的domains.yaml

domains:
  - domain: &domain domain.com
    name: jack
    emaillocal: jack
    emaildomain: *domain

  - domain: &domain thehill.com
    name: Jill
    emaillocal: jill
    emaildomain: *domain

然后用

#! /usr/bin/ruby

require "yaml"

yaml = YAML.load_file('domains.yaml')

yaml['domains'].each { |d|
  d['email'] = d['emaillocal'] + '@' + d['emaildomain']
}

puts YAML::dump(yaml)

你得到了

domains: 
- name: jack
  emaildomain: domain.com
  domain: domain.com
  emaillocal: jack
  email: jack@domain.com
- name: Jill
  emaildomain: thehill.com
  domain: thehill.com
  emaillocal: jill
  email: jill@thehill.com

答案 1 :(得分:0)