Feng Luhan wrote: > I hava a yaml file as application config file. I use YAML::Store to > reset yaml key value, but it is not work. please help me! > > y = YAML::Store.new( "#{RAILS_ROOT}/config_app/config.yml", :Indent => 2 > ) > y.transaction do > y['value'].key1 = 'aaa' # undefined method `[]' for > #<YAML::DomainType> > y['value'].key2 = 'bbb' > end > > File.open('config.yml','a+') do |file| > yy = YAML::load(file) > puts yy.value['key1'] # key1 = 111 > yy.value['key1'] = 'aaa' # config.yml have not changed. > end I don't know much about YAML::Store, but if it is a YAML version of PStore, then I recommend using my FSDB library instead. Here's an example: require 'fsdb' # http://redshift.sourceforge.net/fsdb db = FSDB::Database.new("~/tmp") # Tell FSDB to use YAML format when it sees ".yml" and ".yaml" suffixes. # It is easy to extend the recognition rules to handle other formats. db.formats = [FSDB::YAML_FORMAT] + db.formats # Write (atomically) the initial data to the file. db["config.yml"] = { "key1" => 111, "key2" => 222 } # Enter a thread-safe and process-safe transaction to # change the state of the file. db.edit("config.yml") do |cfg| cfg['key1'] = 'aaa' cfg['key2'] = 'bbb' end # Check that it works. puts File.read(File.expand_path("~/tmp/config.yml")) __END__ Output: --- key1: aaa key2: bbb -- vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407