Sto tentando di modificare la deserializzazione predefinita del formato timestamp incorporato, per influenzare il tempo di Ruby.Ruby YAML :: carico
faccio questo (con successo) con Hash:
YAML::add_domain_type('yaml.org,2002', 'map') { |t, v| nil }
YAML::add_domain_type('ruby.yaml.org,2002', 'hash') { |t, v| nil }
hash = { :hello => :world }
puts YAML::load(hash.to_yaml) # nil
Ma quando provo lo stesso con Time, non funziona:
YAML::add_domain_type('yaml.org,2002', 'timestamp') { |t, v| nil }
YAML::add_domain_type('ruby.yaml.org,2002', 'time') { |t, v| nil }
puts YAML::load(Time.now.to_yaml).class # 'Time'
Qualsiasi aiuto sarebbe apprezzato. Grazie!
non sono sicuro se è legato, ma YAML non riesce a roundtrip oggetti tempo secondo http://redmine.ruby-lang.org/issues/show/4005 –
qual è lo scopo della prima riga, 'YAML :: add_domain_type ('yaml.org, 2002', 'map') {| t, v | nil} 'perché se lo rimuovi, anche l'hash non funziona. – stephenr
Riferimento per [YAML :: add_domain_type] (http://yaml4r.sourceforge.net/doc/class/yaml_add_domain_type_method.htm). –