Ich versuche, die Standard-Deserialisierung des integrierten Timestamp-Format zu ändern, um Rubys Zeit zu beeinflussen.Ruby YAML :: load
ich dies tun (erfolgreich) mit 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
Aber wenn ich das gleiche mit der Zeit versuchen, funktioniert es nicht:
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'
Jede Hilfe würde geschätzt. Vielen Dank!
Ich bin mir nicht sicher, ob es im Zusammenhang, aber YAML versagt Zeitobjekte Roundtrip nach http://redmine.ruby-lang.org/issues/show/4005 –
Was ist der Zweck der allerersten Zeile? YAML :: add_domain_type ('yaml.org, 2002', 'map') {| t, v | nil} 'weil, wenn Sie das entfernen, der Hash auch nicht funktioniert. – stephenr
Referenz für [YAML :: add_domain_type] (http://yaml4r.sourceforge.net/doc/class/yaml_add_domain_type_method.htm). –