Ruby · Intermediário · Inglês · Técnico
Marshal
Módulo que serializa objetos Ruby numa string binária com dump e os reconstrói com load. Serve para cópia profunda e cache, mas o formato é exclusivo do Ruby.
Onde usar
Aparece em caches e em cópias profundas rápidas. Nunca use Marshal.load em dados não confiáveis: ele pode instanciar objetos arbitrários e abrir brecha de execução de código.
Em código
original = { lista: [1, 2] }
copia = Marshal.load(Marshal.dump(original))
copia[:lista] << 3
p original[:lista] # => [1, 2]
p copia[:lista] # => [1, 2, 3]Exemplos
I made a deep copy with Marshal dump and load.
Fiz uma cópia profunda com dump e load do Marshal.
Never call Marshal.load on user input.
Nunca chame Marshal.load em dados do usuário.
Cuidado
Não o use como formato de troca com outras linguagens nem entre versões diferentes do Ruby; para isso, prefira JSON.
Sinônimos
serialização