在Ruby中更新YAML文件

coo*_*ing 7 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
Run Code Online (Sandbox Code Playgroud)

使用这个类:

oj = Mycfg.new
oj.init

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

oj.save
Run Code Online (Sandbox Code Playgroud)

YAML文件:

name : tom
pawd : 123456
version : 0.0.1
created : 2011-10-24
changed : 2011-10-24
Run Code Online (Sandbox Code Playgroud)

save如果有什么变化,如何完成更新YAML文件的方法?

Eri*_*ton 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) }
Run Code Online (Sandbox Code Playgroud)