ExpertiDict

Ruby · Intermediário · Inglês · Técnico

Marshal

/ˈmɑɹʃəl/substantivo

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

Veja também

Todos os termos de Ruby