我有一个YAML文件中的一堆Hashes(用于Puppet/Hiera的服务器配置),看起来是这样的:
---
apache_vhosts:
'webuser.co.uk':
ip: '*'
port: '80'
serveraliases: ['www.webuser.co.uk',]
add_listen: false
docroot: '/home/webuser/public_html'
docroot_owner: 'webuser'
docroot_group: 'apache'
serveradmin: 'webmaster@webuser.co.uk'
scriptalias: '/home/webuser/public_html/cgi-bin/'
access_log_format: '\"%{X-Forwarded-For}i\" %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"'
override: 'all'
users:
'webuser':
ensure: 'present'
gid: '500'
managehome: true
home: '/home/webuser'
password: '$6$zix5AzRheEzQwadthjvLNh.8maO6o4DU4Y0POTaS6xfgjfdvihP2O/UQN6eVDHjG2hTCT6VTLk5HsXeB9FF0xMlYiYY9W1'
password_max_age: '99999'
password_min_age: '0'
shell: '/sbin/nologin'
uid: '500'
我需要以自动化的方式在Ruby中追加这些哈希值。想法是,一个请求到来并触发一个Webhook,运行一个Ruby脚本,添加一个新的Apache VHost和相应的用户。从我所看到的情况来看,Ruby文档在操作YAML方面非常不足,而且谷歌搜索也没有找到任何相关的内容。也许有人可以指点我正确的方向?
load
解析它,而是使用load_file
一步读取和解析。另外,不要将哈希序列化到output
变量中,然后再写入,只需使用File.write("file.yml", YAML.dump(data))
即可。创建仅使用一次的中间变量会减慢代码并浪费内存。 - the Tin Manri YAML
检查了它,它只给出了YAML.load
和YAML.dump
,但足以解析和序列化到YAML数据。我同意后面部分,我只是添加它是因为我想要一点清晰度(或强调)关于YAML.dump
,因为我正在展示如何使用它。但结果OP已经涵盖了那部分,答案中不需要那部分。 - limekin