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