Ruby,使用数组写入 YAML 文件

Ruby, writing to a YAML file, with arrays

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

酷!!

但是,当我尝试保存它们时,RUBY 中出现错误:

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

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

  1. 配置文件是否存在,如果不存在,就新建一个。
  2. 既然我们知道它存在,YAML.open它
  3. 设置new/overwritingkey/value对
  4. 重新写入文件

但是,我遇到了上面的错误。

我是 Ruby 的新手(PHP 伙计),请告诉我我哪里蠢了:)

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

问题是您创建了一个空文件。 YAML 解析器 returns false 用于空字符串:

YAML.load('') #=> false

当 YAML 加载程序返回 false:

时,只需将 config_file 设置为一个空散列
config_file = YAML.load_file(path_to_file) || {}