ruby — Langage de script interprété orienté objet
SYNTAXE
ruby [--copyright] [--version] [-SUacdlnpswvy] [-0[octal]] [-C directory]
[-E external[:internal]] [-F[pattern]] [-I directory] [-K[c]] [-T[level]] [-W[level]]
[-e command] [-i[extension]] [-r library] [-x[directory]] [--{enable|disable}-FEATURE]
[--dump=target] [--verbose] [--crash-report=template] [--] [program_file] [argument ...]
DESCRIPTION
Ruby est un langage de script interprété pour une programmation orientée objet rapide et facile. Il a de nombreuses fonctionnalités pour traiter les fichiers texte et effectuer des tâches de gestion du système (comme en Perl). Il est simple, direct et extensible.
Si vous recherchez un langage pour une programmation orientée objet facile, ou si vous n'aimez pas la complexité de Perl, ou si vous aimez le concept de LISP, mais que vous n'aimez pas trop de parenthèses, Ruby pourrait être le langage qui vous convient.
FONCTIONNALITÉS
Les fonctionnalités de Ruby sont les suivantes :
Interprété Ruby est un langage interprété, vous n'avez donc pas à recompiler les programmes écrits en Ruby pour les exécuter.
Les variables n'ont pas de type (typage dynamique) Les variables en Ruby peuvent contenir des données de n'importe quel type. Vous n'avez pas à vous soucier du typage des variables. Par conséquent, il y a une vérification plus faible au moment de la compilation.
Aucune déclaration n'est nécessaire Vous pouvez utiliser des variables dans vos programmes Ruby sans aucune déclaration. Les noms de variables indiquent leur portée : globale, de classe, d'instance ou locale.
Syntaxe simple Ruby a une syntaxe simple influencée légèrement par Eiffel.
Pas de gestion de la mémoire au niveau de l'utilisateur Ruby dispose d'une gestion automatique de la mémoire. Les objets qui ne sont plus référencés nulle part sont automatiquement collectés par le ramasse-miettes intégré à l'interpréteur.
Tout est un objet Ruby est un langage purement orienté objet, et ce depuis sa création. Même les données de base comme les entiers sont considérées comme des objets.
Classe, héritage et méthodes En tant que langage orienté objet, Ruby possède naturellement des fonctionnalités de base telles que les classes, l'héritage et les méthodes.
Méthodes singleton Ruby permet de définir des méthodes pour certains objets. Par exemple, vous pouvez définir une action de « clic sur un bouton » pour un widget spécifique en définissant une méthode singleton pour le bouton. Ou, vous pouvez créer votre propre système d'objets basé sur des prototypes à l'aide de méthodes singleton, si vous le souhaitez.
Mix-in par modules Ruby n'a pas intentionnellement d'héritage multiple, car c'est une source de confusion. Au lieu de cela, Ruby a la possibilité de partager des implémentations dans l'arborescence d'héritage. Ceci est souvent appelé un « mix-in ».
Itérateurs Ruby dispose d'itérateurs pour l'abstraction de boucles.
Les fermetures En Ruby, vous pouvez transformer une procédure en objet.
Traitement de texte et expressions régulières Ruby dispose de nombreuses fonctionnalités de traitement de texte, comme Perl.
M17N, indépendant du jeu de caractères
Ruby prend en charge la programmation multilingue. Il est facile de traiter des textes écrits dans différentes langues et encodés en différents jeux de caractères, sans dépendre d’Unicode.
Grands nombres Grâce aux grands nombres intégrés, vous pouvez par exemple calculer la factorielle de 400.
Réflexion et langages spécifiques à un domaine Une classe est également une instance de la classe Class. La définition des classes et des méthodes est une expression, tout comme 1+1. Ainsi, vos programmes peuvent même écrire et modifier des programmes. Vous pouvez donc écrire votre application dans votre propre langage de programmation, basé sur Ruby.
Gestion des exceptions Comme en Java(tm).
Accès direct au système d’exploitation Ruby peut utiliser la plupart des appels système Unix, souvent utilisés dans la programmation système.
Chargement dynamique Sur la plupart des systèmes Unix, vous pouvez charger des fichiers objets dans l’interpréteur Ruby à la volée.
Riches bibliothèques En plus des « bibliothèques intégrées » et des « bibliothèques standard » fournies avec Ruby, une grande quantité de bibliothèques tierces (« gems ») sont disponibles via le système de gestion de paquets appelé « RubyGems », à savoir la commande gem(1). Visitez RubyGems.org (https://rubygems.org/) pour trouver les gems dont vous avez besoin et explorez GitHub (https://github.com/) pour voir comment elles sont développées et utilisées.
OPTIONS
L’interpréteur Ruby accepte les options de ligne de commande suivantes (commutateurs). Elles sont très similaires à celles de perl(1).
--copyright Affiche l’avis de copyright, puis quitte immédiatement sans exécuter de script.
--version Affiche la version de l’interpréteur Ruby, puis quitte immédiatement sans exécuter de script.
-0[octal] (Le chiffre « zéro »). Spécifie le séparateur d’enregistrement d’entrée ($/) comme un nombre octal. Si aucun chiffre n’est spécifié, le caractère nul est pris comme séparateur. D’autres commutateurs peuvent suivre les chiffres. -00 place Ruby en mode paragraphe. -0777 fait lire l’ensemble du fichier en une seule chaîne, car aucun caractère avec cette valeur n’est valide.
-C directory
-X directory Force Ruby à basculer vers le répertoire.
-E external[:internal]
--encoding external[:internal]
Spécifie la ou les valeurs par défaut pour les encodages externes et l’encodage interne. Les valeurs doivent être séparées par deux-points (:). Vous pouvez omettre celle pour les encodages internes ; dans ce cas, la valeur (Encoding.default_internal) sera nil.
--external-encoding=encoding
--internal-encoding=encoding
Spécifie l’encodage externe ou interne par défaut.
-F pattern Spécifie le séparateur de champ d’entrée ($;).
-I directory Permet d’indiquer à Ruby où charger les scripts de bibliothèque. Le chemin du répertoire sera ajouté à la variable load-path ($:).
-K kcode Spécifie l’encodage KANJI (japonais). La valeur par défaut pour les encodages de script (__ENCODING__) et les encodages externes (Encoding.default_external) sera celle spécifiée. kcode peut être l’une des suivantes.
e EUC-JP
s Windows-31J (CP932)
u UTF-8
n ASCII-8BIT (BINARY)
-S Force Ruby à utiliser la variable d'environnement PATH pour rechercher le script, à moins que son nom ne commence par une barre oblique. Ceci est utilisé pour émuler #! sur les machines qui ne le prennent pas en charge, de la manière suivante :
#! /usr/local/bin/ruby
# Cette ligne rend la ligne suivante un commentaire en Ruby \
exec /usr/local/bin/ruby -S $0 $*
Sur certains systèmes, $0 ne contient pas toujours le chemin complet, vous devez donc utiliser l'option -S pour indiquer à Ruby de rechercher le script si nécessaire (pour gérer les espaces intégrés, etc.). Une construction meilleure que $* serait ${1+"$@"}, mais elle ne fonctionne pas si le script est interprété par csh(1).
-T[level=1] Active les vérifications de contamination au niveau spécifié (par défaut : 1).
-U Définit la valeur par défaut des encodages internes (Encoding.default_internal) à UTF-8.
-W[level=2] Active le mode verbeux au niveau spécifié sans afficher le message de version au début. Le niveau peut être :
0 Le mode verbeux est « silence ». Il définit $VERBOSE à nil.
1 Le mode verbeux est « medium ». Il définit $VERBOSE à false.
2 (par défaut) Le mode verbeux est « verbose ». Il définit $VERBOSE à true. -W2 est identique à -w.
-a Active le mode de division automatique lorsqu'il est utilisé avec -n ou -p. En mode de division automatique, Ruby exécute
$F = $_.split
au début de chaque boucle.
--backtrace-limit=num
Limite la longueur maximale des traces de pile à num lignes (par défaut : -1, ce qui signifie qu'il n'y a pas de limite).
-c Force Ruby à vérifier la syntaxe du script et à se quitter sans l'exécuter. S'il n'y a pas d'erreurs de syntaxe, Ruby affichera « Syntax OK » sur la sortie standard.
-d
--debug Active le mode débogage. $DEBUG sera défini sur true.
-e command Spécifie le script à partir de la ligne de commande tout en indiquant à Ruby de ne pas rechercher le nom du fichier de script dans le reste des arguments.
-h
--help Affiche un résumé des options.
-i extension Spécifie le mode d'édition en place. L'extension, si elle est spécifiée, est ajoutée au nom du fichier d'origine pour créer une copie de sauvegarde. Par exemple :
% echo matz > /tmp/junk
% cat /tmp/junk
matz
% ruby -p -i.bak -e '$_.upcase!' /tmp/junk
% cat /tmp/junk
MATZ
% cat /tmp/junk.bak
matz
-l (La lettre minuscule « ell »). Active le traitement automatique des fins de ligne, ce qui signifie définir d'abord $\ à la valeur de $/, puis supprimer chaque ligne lue à l'aide de chomp!.
-n Force Ruby à supposer la boucle suivante autour de votre script, ce qui le fait itérer sur les arguments de nom de fichier un peu comme sed -n ou awk.
while gets
...
end
-p Fonctionne de la même manière que l'option -n, mais affiche la valeur de la variable $_ à la fin de chaque boucle. Par exemple :
% echo matz | ruby -p -e '$_.tr! "a-z", "A-Z"'
MATZ
-r library Force Ruby à charger la bibliothèque à l'aide de require. C'est utile lorsque vous utilisez -n ou -p.
-s Active l’analyse des options pour les options qui suivent le nom du script, mais qui précèdent les arguments de nom de fichier (ou avant un --). Toutes les options trouvées sont supprimées de ARGV et la variable correspondante est définie dans le script. Par exemple :
#! /usr/local/bin/ruby -s
# affiche « true » si l’option -xyz est utilisée.
print "true\n" if $xyz
-v Active le mode verbeux. Ruby affiche sa version au début et définit la variable $VERBOSE sur true. Certaines méthodes affichent des messages supplémentaires si cette variable est true. Si cette option est donnée et qu’aucune autre option n’est présente, Ruby quitte le programme après avoir affiché sa version.
-w Active le mode verbeux sans afficher de message de version au début. Elle définit la variable $VERBOSE sur true.
-x[répertoire] Indique à Ruby que le script est intégré dans un message. Les données inutiles au début sont ignorées jusqu’à la première ligne qui commence par « #! » et qui contient la chaîne « ruby ». Toutes les options significatives sur cette ligne sont appliquées. La fin du script doit être spécifiée par EOF, ^D (Ctrl+D), ^Z (Ctrl+Z) ou le mot réservé __END__. Si le nom du répertoire est spécifié, Ruby passe à ce répertoire avant d’exécuter le script.
-y
--yydebug Cette option n’est pas garantie d’être compatible.
Active le mode de débogage du compilateur. Ruby affiche un grand nombre de messages d’état internes pendant la compilation. N’utilisez cette option que si vous comptez déboguer l’interpréteur Ruby.
--disable-FEATURE
--enable-FEATURE Désactive (ou active) la FEATURE spécifiée.
--disable-gems
--enable-gems Désactive (ou active) les bibliothèques RubyGems. Par défaut, Ruby charge la dernière version de chaque gem installé. La constante Gem est true si RubyGems est activé, false sinon.
--disable-rubyopt
--enable-rubyopt Ignore (ou prend en compte) la variable d’environnement RUBYOPT. Par défaut, Ruby prend en compte cette variable.
--disable-all
--enable-all Désactive (ou active) toutes les fonctionnalités.
--dump=target Affiche des informations.
Affiche la cible spécifiée. La cible peut être l’une des suivantes :
version Affiche la description de la version (identique à --version).
usage Affiche un bref message d’utilisation (identique à -h).
help Affiche un message d’aide détaillé (identique à --help).
syntax Vérifie la syntaxe (identique à -c --yydebug).
Ou l’une des suivantes, qui sont destinées au débogage de l’interpréteur :
yydebug Active le mode de débogage du compilateur (identique à --yydebug).
parsetree Affiche une représentation textuelle de l’AST Ruby pour le programme.
parsetree_with_comment Affiche une représentation textuelle de l’AST Ruby pour le programme, mais chaque nœud est annoté avec le code source Ruby associé.
insns Affiche une liste des instructions de bytecode désassemblées.
insns_without_opt Affiche la liste des instructions de bytecode désassemblées avant que diverses optimisations n’aient été appliquées.
--verbose Active le mode verbeux sans afficher de message de version au début. Elle définit la variable $VERBOSE sur true. Si cette option est donnée et qu’il n’y a pas d’arguments de script (fichier script ou options -e), Ruby quitte le programme immédiatement.
--crash-report=template
Définit le modèle du nom de chemin pour enregistrer le rapport de plantage. Voir la variable d’environnement RUBY_CRASH_REPORT pour plus de détails.
ENVIRONNEMENT
RUBYLIB Une liste de répertoires séparés par des deux-points qui sont ajoutés au chemin de chargement des bibliothèques de Ruby ($:).
Les répertoires de cette variable d’environnement sont recherchés avant le chemin de chargement standard.
Ex. :
RUBYLIB="$HOME/lib/ruby:$HOME/lib/rubyext"
RUBYOPT Options Ruby supplémentaires.
Ex. :
RUBYOPT="-w -Ke"
Notez que RUBYOPT ne peut contenir que -d, -E, -I, -K, -r, -T, -U, -v, -w, -W, --debug, --disable-FEATURE et --enable-FEATURE.
RUBYPATH Une liste de répertoires séparés par des deux-points que Ruby recherche pour les programmes Ruby lorsque l’indicateur -S est spécifié. Cette variable précède la variable d’environnement PATH.
RUBYSHELL Le chemin d’accès à la commande du shell du système. Cette variable d’environnement est activée uniquement pour les plateformes mswin32, mingw32 et OS/2. Si cette variable n’est pas définie, Ruby fait référence à COMSPEC.
PATH Ruby fait référence à la variable d’environnement PATH lors de l’appel à Kernel#system.
Et Ruby dépend de certaines variables d’environnement liées à RubyGems, sauf si RubyGems est désactivé. Voir l’aide de gem(1) ci-dessous.
% gem help
ENVIRONNEMENT GC
Le ramasse-miettes (GC) de Ruby suit les objets dans des emplacements de taille fixe, mais chaque objet peut avoir des allocations de mémoire auxiliaires gérées par la famille de fonctions malloc de la bibliothèque standard C (malloc(3), calloc(3) et realloc(3)). Dans cette documentation, le « tas » fait référence au tas d’objets Ruby d’emplacements de taille fixe, tandis que « malloc » fait référence aux allocations auxiliaires, communément appelées le « tas de processus ». Il existe donc au moins deux manières possibles de déclencher le GC :
1 Atteindre la limite d’objets.
2 Atteindre la limite malloc.
Dans Ruby 2.1, le GC générationnel a été introduit et les limites sont divisées en générations jeunes et anciennes, ce qui permet d’ajouter deux façons supplémentaires de déclencher un GC :
3 Atteindre la limite d’objets anciens.
4 Atteindre la limite malloc ancienne.
Il existe actuellement 4 zones possibles dans lesquelles le GC peut être ajusté par les 11 variables d’environnement suivantes : RUBY_GC_HEAP_INIT_SLOTS Emplacements d’allocation initiaux. S’applique à toutes les tailles d’emplacement. Introduit dans Ruby 2.1, par défaut : 10 000.
RUBY_GC_HEAP_%d_INIT_SLOTS Allocation initiale d’emplacements dans un tas spécifique. Les tas disponibles peuvent être trouvés dans les clés de `GC.stat_heap`. Introduit dans Ruby 3.3.
RUBY_GC_HEAP_FREE_SLOTS Préparez au moins ce nombre d’emplacements après le GC. Allouez ce nombre d’emplacements s’il n’y a pas assez d’emplacements. Introduit dans Ruby 2.1, par défaut : 4096
RUBY_GC_HEAP_GROWTH_FACTOR Augmentez le taux d’allocation des emplacements du tas par ce facteur. Introduit dans Ruby 2.1, par défaut : 1.8, minimum : 1.0 (pas de croissance)
RUBY_GC_HEAP_GROWTH_MAX_SLOTS Le taux d'allocation est limité à ce nombre de slots, empêchant une allocation excessive due à
RUBY_GC_HEAP_GROWTH_FACTOR. Introduit dans Ruby 2.1, valeur par défaut : 0 (pas de limite)
RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR Effectue un GC complet lorsque le nombre d'objets anciens est supérieur à
R * N, où R est ce facteur et N est le nombre d'objets anciens après le dernier GC complet. Introduit dans Ruby 1.1, valeur par défaut : 2.0
RUBY_GC_MALLOC_LIMIT La limite initiale de l'allocation de la génération jeune à partir de la
famille malloc. Le GC démarre lorsque cette limite est atteinte. Valeur par défaut : 16 Mo
RUBY_GC_MALLOC_LIMIT_MAX La limite maximale de l'allocation de la génération jeune à partir de malloc avant que le GC ne démarre. Empêche une croissance excessive de malloc due à RUBY\_GC\_MALLOC\_LIMIT\_GROWTH\_FACTOR. Introduit dans
Ruby 2.1, valeur par défaut : 32 Mo.
RUBY_GC_MALLOC_LIMIT_GROWTH_FACTOR Augmente la limite des appels malloc de la génération jeune, réduisant la fréquence du GC mais augmentant la croissance de malloc jusqu'à ce que
RUBY_GC_MALLOC_LIMIT_MAX soit atteint. Introduit dans Ruby 1, valeur par défaut : 1,4, minimum : 1,0 (pas de croissance)
RUBY_GC_OLDMALLOC_LIMIT La limite initiale de l'allocation de la génération ancienne à partir de malloc, un GC complet démarre lorsque cette limite est atteinte. Introduit dans Ruby 2.1, valeur par défaut : 16 Mo
RUBY_GC_OLDMALLOC_LIMIT_MAX La limite maximale de l'allocation de la génération ancienne à partir de malloc avant qu'un GC complet ne démarre. Empêche une croissance excessive de malloc due à
RUBY_GC_OLDMALLOC_LIMIT_GROWTH_FACTOR. Introduit dans Ruby 2.1, valeur par défaut : 128 Mo
RUBY_GC_OLDMALLOC_LIMIT_GROWTH_FACTOR Augmente la limite de l'allocation malloc de la génération ancienne,
réduisant la fréquence du GC complet mais augmentant la croissance de malloc jusqu'à ce que RUBY_GC_OLDMALLOC_LIMIT_MAX soit atteint. Introduit dans Ruby 2.1, valeur par défaut : 1,2, minimum : 1,0 (pas de croissance)
TAILLE DE LA PILE DE L'ENVIRONNEMENT
Les variables d'environnement de la taille de la pile sont spécifiques à l'implémentation et sont susceptibles de changer avec les différentes versions de Ruby. La pile VM est utilisée pour le code Ruby pur et est gérée par la machine virtuelle. La pile machine est utilisée par le système d'exploitation et son utilisation dépend des extensions C ainsi que des options du compilateur C. L'utilisation de valeurs plus faibles pour ces paramètres peut permettre aux applications de conserver davantage de Fibers ou de Threads en cours d'exécution ; mais augmente le risque d'exceptions SystemStackError et de plantages (SIGSEGV). Ces variables d'environnement sont disponibles depuis Ruby 2.0.0. Toutes les valeurs sont spécifiées en octets.
RUBY_THREAD_VM_STACK_SIZE Taille de la pile VM utilisée lors de la création d'un thread. valeur par défaut : 524288 (CPU 32 bits) ou 1048575 (CPU 64 bits)
RUBY_THREAD_MACHINE_STACK_SIZE Taille de la pile machine utilisée lors de la création d'un thread. valeur par défaut : 524288 ou
1048575
RUBY_FIBER_VM_STACK_SIZE Taille de la pile VM utilisée lors de la création d'une fibre. valeur par défaut : 65536 ou 131072
RUBY_FIBER_MACHINE_STACK_SIZE Taille de la pile machine utilisée lors de la création d'une fibre. valeur par défaut : 262144 ou
524288
ENVIRONNEMENT DE RAPPORTS DE PLANTAGE
RUBY_CRASH_REPORT Le modèle du nom du chemin pour enregistrer le rapport de plantage. valeur par défaut : aucun
Nommage des fichiers de rapports de plantage
Le modèle peut contenir des spécificateurs % qui sont substitués par les valeurs suivantes lors de la création d’un fichier de rapport de plantage :
%% Un seul caractère %.
%e Nom de base de l’exécutable.
%E Chemin d’accès de l’exécutable, les barres obliques (/) étant remplacées par des points d’exclamation (!).
%f Nom de base du nom du programme, $0.
%F Chemin d’accès du nom du programme, $0, les barres obliques (/) étant remplacées par des points d’exclamation (!).
%p PID du processus dumpé.
%t Heure du dump, exprimée en secondes depuis l’époque, 1970-01-01 00 :00 :00 +0000 (UTC).
%NNN Un code de caractère en octal.
Un seul % à la fin du modèle est supprimé du nom de fichier du core, de même que la combinaison d’un % suivi de tout autre caractère que ceux mentionnés ci-dessus. Tous les autres caractères du modèle deviennent une partie littérale du nom de fichier du core. Le modèle peut inclure des caractères ‘/’, qui sont interprétés comme des délimiteurs pour les noms de répertoires.
Redirection des rapports de plantage vers un programme
Si le premier caractère de ce fichier est un symbole de pipe (|), le reste de la ligne est interprété comme la ligne de commande d’un programme (ou d’un script) qui doit être exécuté.
Le modèle de pipe est divisé en espaces en une liste d’arguments avant que les paramètres du modèle ne soient étendus.
VOIR AUSSI
https://www.ruby-lang.org/ Le site web officiel.
https://www.ruby-toolbox.com/ Catalogue complet des bibliothèques Ruby.
SIGNALEMENT DE BUGS
Les vulnérabilités de sécurité doivent être signalées par e-mail à _. Les problèmes signalés seront publiés après avoir été corrigés.
Les autres bugs et demandes de fonctionnalités peuvent être signalés via le système de suivi des problèmes de Ruby (https://bugs.ruby-lang.org/). Ne signalez pas les vulnérabilités de sécurité via ce système, car il publie immédiatement les vulnérabilités.
AUTEURS
Ruby est conçu et implémenté par Yukihiro Matsumoto <_>.
Voir ⟨https://github.com/ruby/ruby/graphs/contributors⟩ pour les contributeurs de Ruby.