J'ai du mal à désérialiser une classe ruby que j'ai écrite à YAML.Classe personnalisée Ruby vers et depuis YAML;
Là où je veux être
Je veux être en mesure de passer un objet autour comme une pleine « question » qui comprend le texte de la question, quelques réponses possibles (Pour le choix multiple.) Et la bonne réponse . Un module (l'encodeur) prend une entrée, construit une classe 'question' et l'ajoute au pool de questions. Un autre module lit un pool de questions et construit un tableau d'objets 'question'.
Là où je suis actuellement
échantillon Question Piscine
--- |
--- !ruby/object:MultiQ
a: "no"
answer: "no"
b: "no"
c: "no"
d: "no"
text: "yes?"
dump Encoder fichier YAML. L'objet est un MultiQ rempli d'entrée. (Voir ci-dessous.)
def dump(file, object)
File.open(file, 'a') do |out|
YAML.dump(object.to_yaml, out)
end
object = nil
end
MultiQ Classe définition
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
Le décodeur (je l'ai essayé différentes choses, donc ce qui est ici n'a pas été ma première ou meilleure estimation. Mais je suis à une perte et la documentation ne pas vraiment expliquer les choses assez bien.)
File.open("test_set.yaml") do |yf|
YAML.load_documents(yf) { |item|
new = YAML.object_maker(MultiQ, item)
puts new
}
end
les questions que vous pouvez répondre
- Comment atteindre mon objectif? Quelles méthodes dois-je utiliser, entre l'analyse, le chargement de fichiers ou de documents, pour désérialiser avec succès une classe Ruby? J'ai déjà regardé le Yocl Rdoc, et je n'ai pas beaucoup absorbé, alors s'il vous plait, ne me liez pas.
- Quelles autres méthodes suggéreriez-vous d'utiliser? Y a-t-il une meilleure façon de stocker des questions comme celle-ci? Devrais-je utiliser le document db, relationnel db, xml? Un autre format?