Ruby,使用数组写入YAML文件

时间:2015-02-09 11:35:46

标签: ruby file yaml

我正在尝试在YAML配置文件中保存一些变量。

酷!!

但是,当我尝试保存它们时,我在RUBY中收到错误:

undefined method `[]=' for false:FalseClass (NoMethodError)

我的功能应该(至少在我的脑海中)是:

  1. 配置文件是否存在,如果不存在,只需创建一个空白。
  2. 现在我们知道它存在,YAML。打开它
  3. 设置新/覆盖键/值对
  4. 重写文件
  5. 但是,我收到了上面的错误。

    我是Ruby的新手(PHP bloke在这里),请告诉我在哪里我很傻:)

    def write_to_file( path_to_file, key, value, overwrite = true )
    
        if !File.exist?(path_to_file)
            File.open(path_to_file, 'a+')
        end
    
        config_file = YAML.load_file( path_to_file)
    
        config_file[key] = value
    
        File.open(path_to_file, 'w') { |f| YAML.dump(config_file, f) }
        # I tried this commented code below too, same error..
        # {|f| f.write config_file.to_yaml }
    
    
    end
    

1 个答案:

答案 0 :(得分:3)

问题是您创建了一个空文件。并且YAML解析器返回false以获取空字符串:

YAML.load('') #=> false

如果是config_file,只需将false设置为空哈希:

config_file = YAML.load_file(path_to_file) || {}