Обновление файла YAML в Ruby - PullRequest
7 голосов
/ 24 октября 2011

Мой класс:

class Mycfg
    @@options = {}

    def init
        @@options = YAML.load_file(Dir.pwd + PATH)
    end

    def set(key, val)
        @@options[key] = val
    end

    def get(key)
        @@options[key]
    end

    def save
    end
end

Использование этого класса:

oj = Mycfg.new
oj.init

if oj.get 'name' == 'tom'
   oj.set 'changed', Data.now
end

oj.save

Файл YAML:

name : tom
pawd : 123456
version : 0.0.1
created : 2011-10-24
changed : 2011-10-24

Как завершить метод saveобновить файл YAML, если что-то изменилось?

1 Ответ

11 голосов
/ 24 октября 2011

Это один лайнер.

w+ усекает файл до 0 и записывает, как будто это новый файл.

options_hash - текущее значение @@options.

Вам понадобится метод получения / доступа, чтобы получить полный хэш. Если вы сделали @@options переменную экземпляра вместо переменной класса, вы могли бы просто сделать attr_accessor :options и затем извлечь его с помощью oj.options.

File.open(Dir.pwd + PATH, 'w+') {|f| f.write(options_hash.to_yaml) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...