web-dev-qa-db-ja.com

RubyコードによるYAMLファイルの読み取りと更新

私はこのようなymlファイルを書きました:

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

私はこのファイルを次のように読んでいます

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

後でlast_update_timeにconfig ['last_update']としてアクセスしていますが、機能していません。また、私はlast_update_timeを私のRubyコードで更新したいので、次のように更新する必要があります:

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

どうすればいいのか分かりません。

17
Joy

.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
38
Phobos