Abbiamo già affrontato YAML nella prima guida durante la costruzione dell'applicazione di esempio. Riprendiamo ora quanto già detto e approfondiamo il discorso introducendo nuove funzionalità.
YAML, che sta per "YAML Ain't Markup Language", è un linguaggio per la rappresentazione delle informazioni. Nasce come risposta, leggera e leggibile, a XML ed è molto utilizzato nel mondo Ruby soprattutto per la costruzione di file di configurazione. A differenza del XML, per definire delle strutture, non si utilizzano i tag annidati, bensì gli spazi dell'indentazione.
I file in formato YAML sono semplici file di testo molto leggibili e, grazie al metodo to_yaml
, possiamo rappresentare in questo formato anche le strutture dati Ruby. Vediamo ad esempio come viene rappresentato un hash in YAML:
>> utenti = [{:username => 'gls', :shell => ['tcsh', 'bash']}, {:username => 'root', :shell => ['csh']}] >> utenti.to_yaml --- - :username: gls :shell: - tcsh - bash - :username: root :shell: - csh
YAML risulta particolarmente utile per la serializzazione dei dati, per le operazioni di lettura e scrittura su file YAML vanno utilizzati rispettivamente i metodi load
e dump
.
Nel codice che segue YAML.dump
scrive l'hash in formato YAML
sul file "utenti.yaml", e YAML.load
legge il file e ritrasforma il codice YAML di nuovo in hash.
require 'yaml' utenti = [{:username => 'gls', :shell => ['tcsh', 'bash']}, {:username => 'root', :shell => ['csh']}] open('utenti.yaml', 'w') { |file| YAML.dump(utenti, file) } utenti_riletti = open("utenti.yaml") { |file| YAML.load(file) }