Cannot unmarshal into nameless class
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 52/100
Direzione di ricerca
Inizia con i percorsi YAML.add_tag e YAML.load mostrati nella riproduzione, quindi traccia come viene risolto il tag registrato quando la classe non ha un nome. Esegui nuovamente l’esempio fornito come caso di regressione; il lavoro è completato quando il caricamento dello YAML restituisce l’oggetto registrato e z.foo restituisce "abc".
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Currently this library relies on class names in order to instantiate objects while unmarshaling, even if you have explicitly registered a tag via add_tag. Consequently, nameless classes do not properly survive a round trip.
require 'yaml'
w = Class.new do
def initialize(foo)
@foo = foo
end
def foo
@foo
end
def encode_with(c)
c['bar'] = @foo
end
def init_with(c)
initialize(c['bar'])
self
end
end
YAML.add_tag('!sample', w)
x = w.new('abc')
y = x.to_yaml # "--- !sample\nbar: abc\n"
z = YAML.load(y) # {"bar"=>"abc"}
z.foo # NoMethodError (undefined method `foo' for {"bar"=>"abc"}:Hash)
- Lingua principale
- Ruby
- Stelle
- 597
- Fork
- 223
- Merge medio
- 14m
- PR unite (30g)
- 1
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di ruby/psych
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
Documentation
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
-
Psych.dump raises Encoding::CompatibilityError for UTF-16/UTF-32 stringsForse già presa @Halvanhelv l’ha presa 31 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 55/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 68/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
ds-drift
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 76/100
we-promise/sure#4120 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 4 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
scanaislop/aislop#476 ·
I maintainer di solito rispondono entro 1 giorno