Как я могу сохранить пары имя / значение в файле с Ruby, где значения могут быть также многострочным текстом?

Как я могу сохранить пары имя / значение (также называемые хешами) в файле с 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 для обработки файлов такого типа? Может быть, я мог бы использовать XML и гем XMLSimple:

<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, Я думаю о приложении реляционной базы данных - но я не уверен - в котором я могу определить свою структуру данных (имя, биография, работает), а затем я получаю текстовые поля, чтобы заполнить данными, а затем сохранить данные в заданном формат в текстовых файлах. Кто-нибудь может мне помочь, как этого добиться?

1 ответ

YAML - хороший выбор, для него есть библиотека в stdlib, она удобна для чтения / редактирования, довольно широко используется (например, файлы настроек в 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}"
Другие вопросы по тегам