如何在Ruby文件中存储名称/值对,其中值也可以是多行文本? [关闭]

问题描述 投票:1回答:1

如何在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,工作)然后我得到文本字段来填充数据,然后将数据保存在给定的文本文件格式。任何人都可以帮我解决这个问题吗?

ruby file hash name-value
1个回答
2
投票

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}"
© www.soinside.com 2019 - 2024. All rights reserved.