Atenção: Obrigatoriamente a classe correspondente ao objeto mencionado no arquivo yml, deve existir em qualquer parte do seu código ou você terá o erro: ArgumentError: undefined class/module ao tentar carregar os dados.
Observe a classe Person indicada na linha 1 do arquivo dados.yml, a mesma existe no código do arquivo init.rb
O arquivo dados.yml será criado automaticamente.
Arquivo dados.yml
--- - !ruby/object:Person name: Ruby age: 36 - !ruby/object:Person name: Will age: 39
Arquivo init.rb
require 'Yaml'
class Person
attr_accessor :name, :age
def initialize name, age
@name = name
@age = age
end
end
people = []
people << Person.new("Ruby",36)
people << Person.new("Will",39)
# salvando dados do objeto no arquivo dados.yml
file = File.new("dados.yml","w")
if Psych.dump(people, file)
puts "Arquivo salvo."
else
puts "Erro ao salvar"
end
file.close
#lendo dados do arquivo dados.yml para a array
load = Psych.load_file("dados.yml")
load.collect {|instance| print instance.name}
Lembrando que load é uma array que contém um objeto, assim como people, então para exibir manualmente, por exemplo a propriedade nome da primeira instância do objeto use:
puts load[0].name

0 comentários :
Postar um comentário