У меня проблемы с десериализацией класса ruby, который я написал в YAML.
Где я хочу быть
Я хочу иметь возможность передать один объект как полный «вопрос», который включает в себя текст вопроса, несколько возможных ответов (для множественного выбора) и правильный ответ. Один модуль (кодировщик) принимает входные данные, создает из него класс «вопрос» и добавляет его в пул вопросов. Другой модуль читает пул вопросов и создает массив объектов «вопрос».
Где я сейчас нахожусь
Образец пула вопросов
--- |
--- !ruby/object:MultiQ
a: "no"
answer: "no"
b: "no"
c: "no"
d: "no"
text: "yes?"
Дамп кодера в файл YAML. Объект - это MultiQ, заполненный вводом. (См. Ниже.)
def dump(file, object)
File.open(file, 'a') do |out|
YAML.dump(object.to_yaml, out)
end
object = nil
end
Определение класса MultiQ
class MultiQ
attr_accessor :text, :answer, :a, :b, :c, :d
def initialize(text, answer, a, b, c, d)
@text = text
@answer = answer
@a = a
@b = b
@c = c
@d = d
end
end
Декодер (я пробовал разные вещи, так что то, что здесь, не было моей первой или лучшей догадкой. Но я в растерянности, и документация на самом деле не объясняет вещи достаточно подробно)
File.open( "test_set.yaml" ) do |yf|
YAML.load_documents( yf ) { |item|
new = YAML.object_maker( MultiQ, item)
puts new
}
end
Вопросы, на которые вы можете ответить
- Как мне достичь своей цели? Какие методы мне следует использовать, между разбором, загрузкой файлов или документов, чтобы успешно десериализовать класс Ruby? Я уже просмотрел YAML Rdoc, и я не очень много поглощал, поэтому, пожалуйста, не просто связывайте меня с ним.
- Какие еще методы вы бы предложили использовать? Есть ли лучший способ хранить такие вопросы? Должен ли я использовать документ DB, реляционный DB, XML? Какой-то другой формат?