2014-01-29 32 views
16

我寫了一個YML文件是這樣的:閱讀和Ruby代碼更新YAML文件

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

我讀這個文件作爲

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

後來我訪問LAST_UPDATE_TIME作爲配置[」 last_update']但它不起作用。此外,我想我的Ruby代碼更新LAST_UPDATE_TIME像它應該像更新:

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

我不知道該怎麼做。

+0

嘗試使用符號訪問它。 'config [:last_update]' – snowe

+3

'YAML.load'嘗試解析給定的字符串。改爲使用'YAML.load_file'。 – mudasobwa

+0

如何更新Yaml文件? – Joy

回答

35

將.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