Écrire le code dans des fichiers

Ce chapitre annexe a pour but de nous apprendre à exécuter du code écrit dans un fichier. En effet, dès que l’on commence à écrire des programmes un peu long, ou que l’on veut le distribuer, il nous est indispensable d’écrire notre code dans un fichier.

Les éditeurs de texte

Pourquoi choisir un éditeur de texte ?

Pour exécuter un programme Ruby depuis un fichier, il suffit le code et de l’enregistrer dans un fichier au format rb. Pour exécuter le code, il faut ouvrir ce fichier avec l’interpréteur Ruby (qui est installé en même temps que Ruby). L’interpréteur Ruby fait son travail et interprète le code du fichier. Normalement, les fichiers au format rb se lancent avec l’interpréteur Ruby par défaut.

Il nous reste juste à voir comment écrire le code dans un fichier. Pour cela, nous allons utiliser un éditeur de texte. Un éditeur de texte est un programme qui sert à… Éditer des textes. Il n’est pas à confondre avec un traitement de texte, qui lui, permet également de faire de la mise en forme et de la mise en page. Le logiciel Bloc-notes de Windows est par exemple un éditeur de texte.

Nous ne pouvons pas utiliser de traitement de texte pour écrire notre code parce qu’ils n’enregistrent pas le texte brut que nous écrivons, mais rajoutent des informations sur la mise en page par exemple, or l’interpréteur n’a besoin que du texte brut.

Il nous faut alors choisir un éditeur de texte. Et ils sont nombreux. Très nombreux. En fait, il y en a pour tous les goûts. Certains sont simples et sobres. D’autres sont très complexes et personnalisables. Certains ne s’utilisent qu’à la souris ou qu’au clavier.

Des éditeurs de texte adaptés à la programmation

Cependant, si nous pouvons choisir n’importe quel éditeur de texte pour coder (la seule condition étant que nous puissions écrire du code brut), certains éditeurs sont plus adaptés à la programmation que d’autre. Un simple bloc-note comme celui de Windows par exemple, n’est pas adapté à la programmation. En effet, il ne permet pas de mettre en place un environnement agréable pour programmer. Comparons par exemple les deux codes qui suivent.

variable = 43
chaine = "#{variable} 2 = #{variable 2}"
"43 + 2 = #{43 + 2}"

variable = 43
chaine = "#{variable} * 2 = #{variable * 2}"
"43 + 2 = #{43 + 2}"

Le premier code est beaucoup moins lisible. En fait, un point important pour un éditeur de code est le respect de la mise en forme que’ l’on donne à notre code et en particulier de l’indentation. Notre éditeur doit alors bien aérer les textes et si possible adopter une police à chasse fixe (et c’est aussi notre devoir d’écrire un code clair et compréhensible).

Un autre point qui est important est la coloration syntaxique. Comparons ces deux codes.

variable = 43
chaine = "#{variable} * 2 = #{variable * 2}"
"43 + 2 = #{43 + 2}"
variable = 43
chaine = "#{variable} * 2 = #{variable * 2}"
"43 + 2 = #{43 + 2}"

Là encore, les deux codes sont strictement identiques, et pourtant, le premier code est plus agréable à lire puisqu’il met en valeur certains éléments-clés de notre code (ici, le code interpolé).

Les éditeurs de texte adaptés à la programmation associent souvent des extensions de fichiers à un langage et utilisent automatiquement la coloration syntaxique approprié. Les fichiers à l’extension .rb sont associés à Ruby ; dès lors, nous enregistrons nos fichiers en utilisant cette extension.

Exécuter le code

Pour exécuter le code, il suffit de suivre ces trois étapes :

  • ouvrir une console ;
  • se rendre dans le dossier de notre fichier ;
  • exécuter la commande ruby nom_fichier.

Pour se déplacer dans les dossiers avec la console, nous utilisons la commande cd (pour change directory). Supposons par exemple que nous soyons dans le dossier /home/user/ au démarrage de la console et que notre fichier qui s’appelle test.rb soit dans le dossier /home/user/programmation/ruby. Il nous faudra alors taper cd programmation/ruby, puis ruby test.rb. On peut aussi le faire en plus d’étapes en tapant ce qui suit.

cd programmation
cd ruby
ruby test.rb

La commande cd est une commande bash. Elle n’est donc pas à utiliser dans IRB, mais directement dans la console.

Faisons un test. En utilisant un éditeur de texte (le Bloc Note de Windows par exemple), écrivons puts "Test." dans un fichier. Enregistrons-le sous le nom test.rb. Ouvrons une console, et rendons-nous dans le dossier où le fichier a été enregistré. Après avoir utilisé la commande ruby test.rb, le programme devrait s’exécuter (et donc afficher le mot « Test »).

Windows — Notepad++

Sous Windows, l’éditeur de texte que nous allons présenter est Notepad++. Il s’agit d’un logiciel gratuit sous licence GPL. Il intègre la coloration syntaxique pour de nombreux langages et dispose de nombreuses extensions.

Installer Notepad++

Avant d’installer Notepad++, il nous faut le télécharger. Le mieux pour cela est de se rendre sur la page de téléchargement de Notepad++. Il suffit alors de cliquer sur le bouton de téléchargement (le gros bouton vert « Download »). Une fois ceci fait, nous exécutons le programme téléchargé pour installer Notepad++.

Notepad++ existe aussi en version portable. L’utilisation de la version portable d’un logiciel ne nécessite pas d’installation. Nous pouvons transporter cette version sur une clé USB, donc l’utiliser sur n’importe quel ordinateur avec nos paramètres.

Pour obtenir la version portable de Notepad++, retournons sur la page de téléchargement du logiciel. Nous pourrONS y trouver deux liens qui correspondent aux versions portables : « Notepad++ zip package » et « Notepad++ 7z package ». Au moment où nous écrivons, ces deux liens sont sous le bouton « Download ».

Exécuter le code

Pour lancer le code écrit, il suffit de l’enregistrer avec l’extension .rb puis de double-cliquer dessus.

NppExec

Quoi ? On vient de me dire dans l’oreillette que c’est quand même fatigant de réduire Notepad++ puis double-cliquer sur votre fichier. Dans ce cas, voyons comment lancer le fichier avec un raccourci clavier. Pour cela, nous allons utiliser une extension de Notepad++ appelé NppExec.

Pour commencer, installons NppExec. Cliquez sur « Compléments » → « Plugin Manager » → « Show Plugin Manager » → « Available ». Là, cherchez NppExec, cochez-le et cliquez sur « Install ».

Installer NppExec.
Installer NppExec.

Maintenant que vous avez installé le plugin, il faut créer un script. Pour cela, appuyez sur F6 (ou Fn + F6) et tapez ceci.

NPP_CONSOLE OFF                              // Ne pas afficher la console NppExec.
NPP_SAVE                                     // Sauvegarder le fichier courant.
CD $(CURRENT_DIRECTORY)                      // Se placer dans le dossier du fichier courant.
NPP_RUN cmd /c $(FULL_CURRENT_PATH) && pause // Exécuter le fichier puis mettre en pause la console.

Cliquez sur « Save » et choisissez un nom pour votre script (pourquoi pas « Ruby »).

Création du script.
Création du script.

Cliquez sur « Compléments » → « NppExec » → « Advanced Options ». Choisissez le script que vous avez créé dans « Associated script » et cliquez sur « Add/Modify ».

Ajout du script.
Ajout du script.

Il ne nous reste plus qu’à faire un raccourci clavier pour ce script : cliquez sur « Paramétrage » → « Raccourcis clavier… » → « Plugin commands », cherchez le nom du script, double-cliquez dessus (ou cliquez sur « Modify ») et choisissez un raccourci : F9 est souvent utilisé, mais la seule règle à respecter est de ne pas utiliser des touches déjà utilisées. Ctrl + Alt + R peut être une bonne idée.

Ajout du raccourci.
Ajout du raccourci.

Ça y est, vous avez votre super raccourci (notez que vous pouvez utiliser le même raccourci pour Python par exemple).

Linux — gedit

Si vous êtes sous Linux, vous disposez sûrement déjà d’un éditeur de texte avec coloration syntaxique et support du langage Ruby. S’il s’agit d’un éditeur que vous avez choisi, que vous avez l’habitude d’utiliser et qui vous convient, ne le changez pas. Sinon, vous devriez vous intéresser au large panel de choix qui est disponible sous Linux. Il y en a vraiment pour tous les goûts. Ici, nous allons vous présenter gedit, un éditeur de texte très simple, qui propose juste le peu de fonctionnalités dont nous avons effectivement besoin. gedit utilise GTK+.

Installer gedit

Sur la plupart des distributions, gedit est installé par défaut. Il est par exemple fourni avec l’environnement de bureau GNOME. S’il n’est pas installé, il suffit d’utiliser votre gestionnaire de paquets pour l’installer. Par exemple…

sudo apt-get install gedit

… ou…

pacman gedit

Vous savez quoi faire pour l’installer. Nous vous laissons faire.

N’oubliez pas d’installer GTK+ pour obtenir gedit avec la meilleure interface graphique.

Une fois gedit installé, lancez-le et habituez-vous à l’interface. La coloration est choisie en fonction de l’extension du fichier ouvert (la coloration pour le Ruby est donc associée aux fichiers .rb), mais vous pouvez bien sûr choisir la coloration dans les paramètres de gedit.

Exécuter le code

La façon la plus simple d’exécuter le script Ruby est d’utiliser le terminal : on ouvre un terminal, on se rend dans le dossier du script (à l’aide la commende cd) et on utilise la commande ruby nom_du_script.rb. Le fichier sera alors interprété par l’interpréteur Ruby, c’est-à-dire qu’il sera exécuté.


Vous pouvez bien sûr essayer d’autres éditeurs de texte. Geany, par exemple, offre plus de fonctionnalités, tout en restant assez simple et ergonomique, mais choisissez avant tout un éditeur qui vous plaît et qui vous permet de coder facilement. Essayez-en plusieurs, lisez les avis des autres, faites-vous vos propres avis et choisissez le vôtre.

Les problèmes possibles

Voir les erreurs obtenues

Vous ne l’avez peut-être pas encore remarqué, mais… écrivez donc un code erroné, et essayez de l’exécuter en cliquant sur le fichier ou en utilisant les méthodes ci-dessus. Exécutez par exemple ce code tout simple.

a = 'Hello'

Problème, la console s’ouvre et se referme aussitôt, et nous n’avons pas le temps de voir l’erreur. Ici, pas de problème, nous avons délibérément fait une erreur, mais imaginez dans un code de plusieurs centaines de lignes où une petite erreur s’est glissée. Si l’on n’a pas accès à l’erreur, la régler sera très compliqué et demandera de relire tout le code. Il nous faut donc faire en sorte que la console ne se ferme pas.

Pour cela, nous allons donc utiliser un peu la console. La seule commande de la console que vous devez connaître est la commande cd (pour change directory), qui permet de changer de répertoire. Voici ce que nous allons faire :

  • ouvrir une console ;
  • se rendre dans le dossier de notre fichier .rb ;
  • exécuter notre fichier .rb.

Ouvrir une console, vous savez faire. Pour vous rendre dans le dossier, nous allons utiliser la commande cd. Supposons que nous soyons dans le dossier /home/user/ au démarrage de la console et que notre fichier qui s’appelle test.rb soit dans le dossier /home/user/programmation/ruby. Il nous faudra alors taper cd programmation/ruby, puis test.rb. On peut aussi le faire en plus d’étapes en tapant ce qui suit.

cd programmation
cd ruby
test.rb

La commande cd est une commande bash. Elle n’est donc pas à utiliser dans IRB, mais directement dans la console.

La console se ferme directement

Si en cliquant sur le programme, la console se ferme directement, c’est tout à fait normal, notre programme s’exécute, puis se ferme. Pour qu’il reste ouvert, nous avons deux solutions :

  • utiliser la méthode du point précédent et ouvrir le programme en passant par la console (utiliser cd pour se rendre dans le dossier et l’exécuter) ;
  • demander au programme d’attendre, par exemple, une saisie de l’utilisateur.

Nous avons déjà vu la première méthode, voyons maintenant la seconde. Elle n’est pas beaucoup plus compliquée (en fait, elle est même plus simple), il suffit d’utiliser gets à la fin de notre code. Comme cela, le programme attendra une saisie de l’utilisateur et se fermera dès que celui-ci en fournira une. Par exemple…

a = 'Bonjour'
gets

Utiliser gets ne fonctionne pas dans le cas d’un code erroné. En effet, dès que Ruby rencontre une erreur dans le programme, il l’arrête.

Ainsi, pour corriger les erreurs de votre code, par exemple, il vaut mieux se déplacer dans le dossier de votre programme à l’aide de cd et exécuter le programme pour trouver les erreurs.

Utilisez gets lorsque, par exemple, vous avez fini un programme, et que vous voulez pouvoir l’utiliser directement (ou le passer à un ami). Pour le moment, nous ne sommes pas dans ce cas, et n’avons pas le niveau de faire des programmes nécessitant cela, mais dans quelques temps, nous pourrons déjà faire des petits scripts intéressants.

Le programme ne se lance pas

Il peut aussi arriver que, lorsque vous cliquez sur le programme (ou l’exécutez grâce au script de Notepad++, par exemple), celui-ci ne se lance pas, ou encore que le fichier s’ouvre avec votre éditeur de texte ou un autre programme. Cela signifie tout simplement que le programme avec lequel les fichiers .rb sont lancés n’est pas Ruby. Pour régler cela, il vous suffit donc de choisir l’interpréteur Ruby en tant que programme par défaut.

Cependant, il peut arriver que vous vouliez justement que le programme s’ouvre par défaut avec votre éditeur. Dans ce cas, lorsque vous voulez lancer le programme, il faut indiquer à votre ordinateur que vous voulez le lancer avec l’interpréteur Ruby. S’il s’agit de le lancer en cliquant dessus, les OS ont toujours une option « Ouvrir avec » accessible depuis un clic droit. Si vous voulez le lancer depuis la console, il faut alors utiliser la commande ruby nom_du_fichier.rb plutôt que nom_du_fichier.rb pour lancer le fichier avec Ruby. De même, il faudra alors changer vos scripts et indiquer que le fichier est à ouvrir avec Ruby. Ainsi, la dernière ligne du script de NppExec devient NPP_RUN cmd /c ruby $(FULL_CURRENT_PATH) && pause.


Vous pouvez maintenant écrire vos codes dans des fichiers et les exécuter.