La documentation officielle pour les variables du système se trouve dans :
http://www.ruby-doc.org/stdlib-2.0/libdoc/English/rdoc/English.html
De nombreuses variables spéciales de Ruby sont accessibles via des méthodes dans divers modules et classes, ce qui masque le fait que la variable est ce qui contient la valeur. Par exemple, lineno
disponible dans IO et héritée de File, est le numéro de ligne de la dernière ligne lue par un flux IO. Il s'appuie sur $/
y $.
Le module "English" fournit des versions longues des variables cryptiques, ce qui le rend plus lisible. L'utilisation des variables cryptiques n'est pas aussi idiomatique en Ruby qu'en Perl, c'est pourquoi elles sont plus curieuses quand on les rencontre.
Ils proviennent de diverses sources : la plupart, sinon tous, sont immédiatement issus de Perl, mais Perl les a hérités de sed, awk, et du reste de sa collection de code de cuisine (c'est un langage formidable, vraiment). (C'est un langage formidable, vraiment.)
Il existe d'autres variables définies par des classes telles que Regexp qui définit les variables d'avant et d'après match, ainsi que les captures. Ceci est tiré de la documentation :
$~ is equivalent to ::last_match;
$& contains the complete matched text;
$` contains string before match;
$' contains string after match;
$1, $2 and so on contain text matching first, second, etc capture group;
$+ contains last capture group.
Bien que Ruby définisse les versions courtes, cryptiques, des variables, il est recommandé d'utiliser require "English"
pour fournir les noms longs. C'est une question de lisibilité, qui se traduit par une facilité de maintenance à long terme.