Il Marshalling e’ la procedura che permette di serializzare dei dati contenuti in un programma, avendo dunque la possibilita’ di salvarli su un file o in un database o di trasmetterli via Internet.
Questa funzionalita’ esiste in quasi ogni linguaggio, ed in ruby e’ implementata nel modulo Marshal.
Marshal#dump()Marshal#load()
Il primo trasforma un oggetto in una stringa, o lo scrivo su di un oggetto IO.
Il secondo accetta un oggetto IO o uno che risponda al metodo to_str(), cioe’ che puo’ essere trasformato in stringa a letto.
Marshal e’ in grado di serializzare quasi tutto quello che desiderate, con l’eccezione degli oggetti Proc, in maniera del tutto automatica:
>> class Mia >> def initialize(a) >> @a=a >> end >> end => nil >> m=Mia.new 10 => #<Mia:0x27cc258 @a=10> >> str= Marshal.dump m => "\004\010o:\010Mia\006:\a@ai\017" >> Marshal.load str => #<Mia:0x27c7a40 @a=10>Notate che i due oggetti non sono lo stesso, anche se sono uguali.