如何在Ruby文件中存储名称/值对(也称为哈希),其中值也可以是多行文本?当然我想用最简单的方式编写代码。我之前在Windows中看过这样的文本文件:
[name]
Dr. Hash Mark
[biografy]
Bla bla bla
bla bla bla
bla bla bla
[works]
The big red one (1923)
The little black zero (1926)
Ruby是否有任何库或gem来处理这种文件?也许我可以使用XML和XMLSimple gem:
<man>
<name>Dr. Hash Mark</name>
<biografy>
Bla bla bla
bla bla bla
bla bla bla
</biografy>
<works>
The big red one (1923)
The little black zero (1926)
</works>
</man>
它们都对我有好处,但是我还需要一个方便的应用程序来填充一堆带有数据的文本文件,我不知道哪个应用程序用来生成这样的文本文件,以后可以用Ruby读取。我想到了一个关系数据库应用程序 - 但我不确定 - 我可以在其中定义我的数据结构(名称,biografy,工作)然后我得到文本字段来填充数据,然后将数据保存在给定的文本文件格式。任何人都可以帮我解决这个问题吗?
YAML是一个不错的选择,在stdlib中有一个lib,它是人类可读/可编辑的,它被广泛使用(例如Rails中的设置文件),它支持多行字符串:
require 'yaml'
filename = 'hash.yaml'
original_hash = {'a' => 'b', 'c' => "d\ne"}
File.write filename, YAML.dump(original_hash)
puts "FILE LOOKS LIKE: #{File.read filename}"
puts "-" * 10
resulting_hash = YAML.load File.read(filename)
puts "READ BACK IN: #{resulting_hash.inspect}"
puts "ARE THEY THE SAME? #{original_hash == resulting_hash}"