用Ruby代码读取和更新YAML文件

18

我已经编写了一个像这样的yml文件:

last_update: '2014-01-28 11:00:00'

我正在以以下方式读取此文件:

config = YAML.load('config/data.yml')

我之后试图通过config['last_update']来访问last_update_time,但是它并没有起作用。同时,我想通过我的Ruby代码更新last_update_time,更新应该像这样进行:

 last_update: '2014-01-29 23:59:59' 

我不知道如何做那件事。


尝试使用符号访问它。config[:last_update] - snowe
3
YAML.load 尝试解析给定的字符串。请改用 YAML.load_file - Aleksei Matiushkin
如何更新那个Yaml文件? - Joy
1
https://dev59.com/FWYr5IYBdhLWcg3wG2pI - snowe
1个回答

41

将 .load 更改为 .load_file,然后您就可以开始了。

#!/usr/bin/env ruby
require 'yaml'
config = YAML.load_file('data.yml')
puts config['last_update']

运行后,我得到了如下结果。

orcus:~ user$ ruby test.rb
# ⇒ some_data

要写入文件,您需要打开YAML文件并写入句柄。类似以下的内容应该可以工作。

require 'yaml'
config = YAML.load_file('data.yml')
puts config['last_update'] #in my file this is set to "some data"
config['last_update'] = "other data"
File.open('data.yml','w') do |h| 
   h.write config.to_yaml
end

输出为

orcus:~ user$ ruby test.rb
some data
orcus:~ user$ cat data.yml
---
last_update: other data

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接