Как я могу сохранить пары имя / значение в файле с 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}"