Ruby,使用数组写入 YAML 文件
Ruby, writing to a YAML file, with arrays
我正在尝试在 YAML 配置文件中保存一些变量。
酷!!
但是,当我尝试保存它们时,RUBY 中出现错误:
undefined method `[]=' for false:FalseClass (NoMethodError)
我的功能(至少在我的脑海中)应该是:
- 配置文件是否存在,如果不存在,就新建一个。
- 既然我们知道它存在,YAML.open它
- 设置new/overwritingkey/value对
- 重新写入文件
但是,我遇到了上面的错误。
我是 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) || {}
我正在尝试在 YAML 配置文件中保存一些变量。
酷!!
但是,当我尝试保存它们时,RUBY 中出现错误:
undefined method `[]=' for false:FalseClass (NoMethodError)
我的功能(至少在我的脑海中)应该是:
- 配置文件是否存在,如果不存在,就新建一个。
- 既然我们知道它存在,YAML.open它
- 设置new/overwritingkey/value对
- 重新写入文件
但是,我遇到了上面的错误。
我是 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) || {}