Чтение и обновление файла YAML по ruby-коду

Я написал файл 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' 

Я понятия не имею, как это сделать.

Ответы

Ответ 1

Переключитесь .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