使YAML在红宝石中干燥
在下面的示例中,我尝试使配置文件尽可能干燥,而不依赖目标源中的eval。第一种说法给出了预期的结果,第二种说法则不是,它也应该给出“秘密”。 知道如何在YAML文件中为密钥别名吗使YAML在红宝石中干燥,yaml,Yaml,在下面的示例中,我尝试使配置文件尽可能干燥,而不依赖目标源中的eval。第一种说法给出了预期的结果,第二种说法则不是,它也应该给出“秘密”。 知道如何在YAML文件中为密钥别名吗 require 'yaml' CONFIG = YAML.load DATA puts CONFIG['org2']['ldappassword'] # Secret puts CONFIG['org3']['ldappassword'] #<<:*DEFAULT['ldappassword'] sho
require 'yaml'
CONFIG = YAML.load DATA
puts CONFIG['org2']['ldappassword'] # Secret
puts CONFIG['org3']['ldappassword'] #<<:*DEFAULT['ldappassword'] should be Secret
__END__
org1: &DEFAULT
treebase: 'DC=Organisation,DC=be'
ldaphost: 9.9.9.9
ldapusername: ORG\999999
ldappassword: Secret
port: 389
org2:
<<: *DEFAULT
org3:
treebase: 'OU=Employees,OU=Accounts,OU=Organiationname,OU=Departments,DC=otherorganisation,DC=be'
ldaphost: 8.8.8.8
ldapusername: ORG\999998
ldappassword: <<:*DEFAULT['ldappassword']
port: 389
需要“yaml”
CONFIG=YAML.load数据
将配置['org2']['ldappassword']#设置为机密
放置配置['org3']['ldappassword'].您应该像这样“重写”默认值
org1: &DEFAULT
treebase: 'DC=Organisation,DC=be'
ldaphost: 9.9.9.9
ldapusername: ORG\999999
ldappassword: Secret
port: 389
org2:
<<: *DEFAULT
org3:
<<: *DEFAULT
treebase: 'OU=Employees,OU=Accounts,OU=Organiationname,OU=Departments,DC=otherorganisation,DC=be'
ldaphost: 8.8.8.8
ldapusername: ORG\999998
port: 389
org1:&DEFAULT
树状结构:“DC=Organization,DC=be”
LDA邮件:9.9.9.9
ldapusername:ORG\999999
ldappassword:秘密
港口:389
org2:
工作原理是这样的,但这是一个小问题,你不能像那样引用子键值,这是YAML约束