【发布时间】:2013-04-29 17:04:51
【问题描述】:
我正在构建一个 Ruby 脚本来更改 config/locales/*.yml Rails 语言环境文件的内容。这些文件包含许多有用的 cmets 和变量。
通过加载、更新和转储它们,我丢失了这些 cmets 和变量。
如何在保留 cmets 和变量的同时以编程方式更新 YAML 文件?
【问题讨论】:
标签: ruby-on-rails ruby yaml
我正在构建一个 Ruby 脚本来更改 config/locales/*.yml Rails 语言环境文件的内容。这些文件包含许多有用的 cmets 和变量。
通过加载、更新和转储它们,我丢失了这些 cmets 和变量。
如何在保留 cmets 和变量的同时以编程方式更新 YAML 文件?
【问题讨论】:
标签: ruby-on-rails ruby yaml
我不认为你可以。
YAML 会忽略数据文件中的 cmets,但不会解析它们,因此它们会在文件加载时被丢弃。加载文件后,它们就消失了。
我能想到的唯一方法是在 YAML 之外打开文件,然后编写 cmets,然后编写使用 to_yaml 创建的 YAML 内容。比如:
require 'yaml'
data = {
'foo' => 'bar',
}
File.open('data.yaml', 'w') do |fo|
fo.puts "# Don't mess with this."
fo.puts data.to_yaml
end
创建:
# Don't mess with this.
---
foo: bar
【讨论】: