我的课程是:
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文件?
答案 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) }