在Ruby中更新YAML文件

时间:2011-10-24 03:11:11

标签: ruby yaml

我的课程是:

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 个答案:

答案 0 :(得分:11)

这是一个班轮。

w+将文件截断为0长度并写入,好像它是一个新文件。

options_hash@@options的当前值。

您需要一个getter / accessor来检索完整哈希。如果您将@@options设为实例变量而不是类变量,则只需执行attr_accessor :options,然后使用oj.options检索它。

File.open(Dir.pwd + PATH, 'w+') {|f| f.write(options_hash.to_yaml) }