Comment utiliser l’IRB pour explorer Ruby

introduction

IRB, pour Interactive Ruby, est un moyen rapide d’explorer le langage de programmation Ruby et d’essayer du code sans créer de fichier. IRB est une Read-Eval-Print Loop ou REPL, un outil proposé par de nombreux langages de programmation modernes. Pour l’utiliser, vous lancez l’exécutable + irb + et tapez votre code Ruby à l’invite. IRB évalue le code que vous tapez et affiche les résultats.

IRB vous donne accès à toutes les fonctionnalités intégrées de Ruby, ainsi qu’à toutes les bibliothèques ou gems que vous avez installés. En outre, vous pouvez configurer IRB pour enregistrer l’historique de vos commandes et même permettre l’auto-complétion de votre code.

Dans ce didacticiel, vous utiliserez IRB pour exécuter du code, inspecter sa sortie, importer des bibliothèques externes et personnaliser votre session IRB.

Démarrer et arrêter la CISR

Si vous avez Ruby installé, vous aurez IRB . Vous pouvez le démarrer sur n’importe quel ordinateur sur lequel Ruby est installé en exécutant la commande + irb + à partir de votre interface de ligne de commande.

irb

L’invite de la CISR vous accueillera:

IRB sessionirb(main):001:0>

L’invite vous indique que vous utilisez IRB et que tout ce que vous exécutez s’exécutera dans le contexte + main +, qui est le contexte par défaut de niveau supérieur d’un programme Ruby. Il montre également un numéro de ligne.

IRB accepte la syntaxe Ruby, que vous pouvez entrer à l’invite. Essayez-le en ajoutant deux nombres ensemble:

2 + 2

Appuyez sur la touche + ENTER + et IRB vous montrera le résultat:

IRB session=> 4

Le symbole + ⇒ + vous indique qu’il s’agit de la valeur de retour de l’expression Ruby.

Pour quitter IRB, tapez + exit + à l’invite ou appuyez sur + CTRL + D +. Vous retournerez à l’invite du shell.

Approfondissons un peu plus l’IRB en examinant comment l’utiliser pour explorer du code.

Exécuter du code dans une session IRB

IRB est un excellent moyen d’essayer du code pour voir s’il s’agit d’une bonne solution à votre problème. Presque tout dans Ruby renvoie une valeur, et chaque fois que vous exécutez une instruction dans IRB, cette valeur renvoyée est imprimée à l’écran.

Pour illustrer cela, exécutez cette instruction dans une nouvelle session IRB:

puts "Hello World"

Lorsque vous appuyez sur la touche + ENTER +, vous obtenez deux résultats de la CISR:

OUTPUTHello World
=> nil

Le premier résultat est la sortie de la méthode + met +, qui affiche la chaîne que vous avez spécifiée, suivie d’un saut de ligne. La méthode + met + affiche le texte sur le périphérique de sortie standard, qui est votre écran. Mais la méthode + met + a une valeur de retour, car chaque méthode de Ruby a une valeur de retour. La méthode + met + renvoie + nil +, et c’est ce que vous montre IRB.

Chaque fois que vous exécutez une instruction, l’invite change, indiquant un nouveau numéro de ligne:

irb(main):001:0> puts "Hello World"
Hello World
=> nil
irb(main):002:0>

Cela peut vous aider à déboguer des instructions lorsque vous utilisez des expressions plus complexes dans une session IRB, car les messages d’erreur font référence aux numéros de ligne.

Vous pouvez affecter des valeurs à des variables dans une session IRB, tout comme dans vos programmes Ruby autonomes. Exécutez cette instruction en la tapant dans votre session IRB et en appuyant sur + ENTER +:

birth_year = 1868

Vous verrez la valeur de retour de cette instruction renvoyée:

IRB session=> 1868

La variable + birth_year + contient cette valeur, mais puisque la plupart des instructions dans Ruby renvoient des valeurs, IRB vous indique également la valeur de retour.

Ajoutez deux autres variables. Tout d’abord, créez une variable appelée + death_year +:

death_year = 1921

Créez ensuite la variable + age_at_death + en soustrayant + birth_year + de + death_year +:

age_at_death = death_year - birth_year

IRB assigne la valeur à la variable, mais affiche également le résultat:

IRB session=> 53

Lorsque vous êtes dans une session IRB, vous n’avez pas besoin d’utiliser une instruction explicite + met + ou + print + si vous ne le souhaitez pas, car vos valeurs de retour seront affichées.

Parfois, vous voudrez écrire du code qui s’étend sur plusieurs lignes. IRB le supporte intuitivement. IRB n’exécute que le code syntaxiquement complet. Le code Ruby suivant utilise un array de requins et utilise le https://www.digitalocean.com / community / tutorials / méthodes-de-tableau-d-utilisation-en-ruby # éléments-recherche-et-de-filtrage [select] pour ne renvoyer que les requins qui contiennent la lettre «a» dans leur nom. Tapez ce code dans votre session IRB, en appuyant sur + ENTER + après chaque ligne:

["Tiger", "Great White", "Angel"].select do |shark|
  shark.include?("a")
end

IRB vous permet d’entrer plusieurs lignes de code, mais il n’exécute le code que lorsqu’il est d’avis que le code est syntaxiquement complet. Notez que l’invite change pour indiquer que l’IRB n’évalue pas encore votre code en utilisant un astérisque (+ * +) et en changeant le zéro final en un pour indiquer une portée différente:

IRB sessionirb(main):005:0> ["Tiger", "Great White", "Angel"].select do |shark|
irb(main):006:    shark.include?("a")
irb(main):007:> end

Puisque la première ligne contient le mot-clé + do +, IRB ne tente rien d’exécuter tant qu’elle ne rencontre pas le mot-clé + end +. Ensuite, il affiche le résultat:

IRB session=> ["Great White"]

En utilisant IRB, vous pouvez tester des fragments de code pour voir leur fonctionnement avant de les incorporer dans vos propres programmes. Vous pouvez également utiliser IRB pour travailler avec des bibliothèques externes.

Utilisation de bibliothèques et de pierres précieuses

Vous pouvez importer des bibliothèques dans votre session IRB à l’aide de l’instruction require ', comme vous le feriez dans un programme Ruby. Ces bibliothèques peuvent être des éléments inclus dans la bibliothèque standard de Ruby, des éléments que vous avez écrits vous-même ou des bibliothèques gems, Ruby distribuées via http://rubygems.org [Rubygems.org] que vous installez à l’aide de la commande `+ gem +.

La bibliothèque standard de Ruby comprend des modules permettant de faire des requêtes Web et d’extraire les résultats. Vous pouvez les utiliser dans votre session IRB exactement comme vous le feriez dans un programme Ruby.

Utilisez l’instruction + require + pour importer Net/HTTP de la bibliothèque standard de Ruby. Entrez la ligne de code suivante dans votre session IRB et appuyez sur + ENTER +:

require 'net/http'

IRB indique que cette instruction renvoie + true +, ce qui vous indique que la bibliothèque a été chargée avec succès. Maintenant, tapez ce code dans IRB pour faire une demande à + ​​icanhazip.com + pour récupérer votre adresse IP externe:

uri = URI.parse("http://icanhazip.com")
response = Net::HTTP.get_response uri
response.body

Lorsque vous entrez chaque ligne, IRB vous indique la valeur de retour afin que vous puissiez déboguer chaque étape:

IRB sessionirb(main):010:0> uri = URI.parse("http://icanhazip.com")
=>
irb(main):011:0> response = Net::HTTP.get_response uri
=>
irb(main):012:0> response.body
=>

Si une bibliothèque est introuvable, vous obtiendrez une réponse différente. Essayez d’importer la bibliothèque HTTParty, ce qui simplifie un peu le travail avec les requêtes HTTP:

require 'httparty'

Vous verrez ce message:

IRB sessionLoadError: cannot load such file -- httparty

Ce message vous indique que la bibliothèque que vous souhaitez n’est pas disponible. HTTParty est distribué comme un bijou, nous devrons donc l’installer. Quittez votre session IRB avec + CTRL + D + ou tapez + exit + pour revenir à votre invite. Puis utilisez la commande + gem + pour installer le + httparty + gem:

gem install httparty

Lancez à nouveau + irb +.

irb

Essayez de charger le module à nouveau. Dans votre session IRB, tapez ce code:

require 'httparty`

Cette fois-ci, IRB affichera + true +, vous indiquant qu’il a été en mesure de charger la bibliothèque. Entrez ce code dans IRB pour l’essayer:

response = HTTParty.get("http://icanhazip.com")
response.body

Vous verrez la sortie imprimée à l’écran:

IRB session=>

Voyons maintenant comment explorer et tester votre propre code Ruby avec IRB.

Chargement de votre code dans IRB

Si vous démarrez une session IRB et utilisez le commutateur + -r +, vous pouvez spécifier les bibliothèques ou les gems que vous souhaitez charger au démarrage de l’IRB. Par exemple, + irb -r httparty + lancerait une session IRB avec le gem + httparty + déjà chargé, ce qui signifie que vous pouvez ignorer l’instruction explicite + require httparty +.

Cependant, vous pouvez également l’utiliser pour charger votre propre code dans une nouvelle session, ce qui est utile lorsque vous souhaitez l’explorer ou le tester.

Quittez votre session IRB en tapant + exit + ou en appuyant sur + CTRL + D +.

Créez un nouveau fichier Ruby nommé + ip_grabber.rb + qui définit un objet + IPGrabber + avec une méthode + get + qui, une fois fournie, renvoie l’adresse IP externe de la machine. Nous allons utiliser la bibliothèque HTTParty pour extraire la réponse de + icanhazip.com +. Nous utiliserions cet objet + IPGrabber + dans notre propre programme pour isoler notre code des modifications externes; utiliser notre obect nous permettrait de changer la bibliothèque sous-jacente et le site que nous utilisons pour résoudre l’adresse IP sans avoir à changer le fonctionnement du reste de notre code.

Ajoutez ce code au fichier pour définir la classe:

ip_grabber.rb

require 'httparty'
class IPGrabber

 def initialize()
   @url = "http://icanhazip.com"
 end

 def get
   response = HTTParty.get(@url)
   response.body.chomp  # remove the \n if it exists
 end
end

Enregistrez le fichier et quittez l’éditeur.

Puis lancez IRB et chargez ce fichier. Comme il s’agit d’un fichier local plutôt que d’une gemme ou d’une bibliothèque intégrée, nous devons spécifier un chemin. Nous n’avons pas non plus besoin de spécifier l’extension + .rb + du fichier.

irb -r ./ip_grabber

La session IRB se charge et vous pouvez commencer à utiliser ce nouvel objet dans votre session comme suit:

ip = IPGrabber.new
ip.get

Vous verrez cette sortie:

IRB session=>

En chargeant votre propre code dans une session IRB, vous pouvez inspecter le code et travailler avec vos propres bibliothèques avant de les intégrer à un programme complet.

Maintenant que vous savez utiliser le code dans une session IRB, voyons comment personnaliser votre session IRB.

Personnalisation de la CISR

Vous pouvez créer un fichier de configuration appelé + .irbrc + qui vous permet de personnaliser votre session IRB. Vous pouvez ensuite ajouter un support pour l’auto-complétion, l’indentation et l’historique des commandes.

Créez ce fichier dans votre répertoire personnel:

nano ~/.irbrc

Commencez par configurer la prise en charge de l’auto-complétion dans IRB. Cela vous permettra d’utiliser la touche + TAB + pour compléter automatiquement les objets, les noms de variables et les noms de méthodes dans IRB:

~ / .irbrc

require 'irb/completion'

Ensuite, ajoutez un support pour enregistrer l’historique de vos commandes dans un fichier externe.

~ / .irbrc

IRB.conf[:SAVE_HISTORY] = 1000

Lorsque cette option est activée, les 1 000 dernières déclarations que vous tapez seront enregistrées dans le fichier + .irb_history + de votre répertoire personnel.

De plus, lorsque vous ouvrez une nouvelle session IRB, votre historique se charge automatiquement et vous pouvez utiliser les touches fléchées + Haut + et + Bas + pour parcourir ces entrées, ou utilisez + CTRL + R + pour recherche inversée, comme vous le feriez dans un shell Bash.

Si vous souhaitez spécifier un fichier d’historique différent, ajoutez-le à votre fichier de configuration:

~ / .irbrc

IRB.conf[:HISTORY_FILE] = '~/'

Ensuite, ajoutez cette ligne à votre fichier de configuration pour activer l’indentation automatique, ce qui est pratique lors de l’écriture de classes, méthodes et blocs:

~ / .irbrc

IRB.conf[:AUTO_INDENT] = true

Votre fichier de configuration peut inclure tout code Ruby valide supplémentaire, ce qui signifie que vous pouvez définir des méthodes d’assistance ou utiliser + require + pour charger des bibliothèques supplémentaires. Par exemple, pour ajouter un assistant + history + à votre session IRB qui montrerait votre historique, ajoutez ce code à + ​​.irbrc +:

irbrc
def history
 history_array = Readline::HISTORY.to_a
 print history_array.join("\n")
end

Lorsque vous chargez votre session IRB, tapez + history + pour afficher votre historique IRB. Vous en avez peut-être un peu, vous pouvez donc modifier la commande + history + afin qu’elle prenne un nombre optionnel de lignes à afficher. Remplacez le code de la fonction + history + par ce code, qui prend un argument optionnel appelé + count + et l’utilise pour limiter les entrées affichées:

irbrc
# history command
def history(count = 0)

 # Get history into an array
 history_array = Readline::HISTORY.to_a

 # if count is > 0 we'll use it.
 # otherwise set it to 0
 count = count > 0 ? count : 0

 if count > 0
   from = hist.length - count
   history_array = history_array[from..-1]
 end

 print history_array.join("\n")
end

Enregistrez le fichier et démarrez une nouvelle session IRB. Ensuite, tapez + history 2 + et vous ne verrez que les deux dernières lignes de votre historique.

Bien que vous puissiez utiliser + .irbrc + pour charger les bibliothèques que vous utilisez fréquemment, n’oubliez pas que chaque bibliothèque que vous chargez augmente le temps de chargement de la session IRB, ce qui peut la rendre moins agréable à utiliser. Il est souvent préférable de charger manuellement des bibliothèques spécifiques avec les instructions + require.

Conclusion

IRB fournit un endroit pour expérimenter le code Ruby. C’est un excellent moyen de définir la logique du programme avant de la placer dans un fichier.

Maintenant que vous êtes familiarisé avec l’IRB, vous pouvez l’utiliser pour explorer les différents types de données de Ruby en suivant ces didacticiels et en utilisant l’IRB pour exécuter les exemples.