Les bases d’une gemme Ruby

J’utilise des gemmes ruby depuis quelques semaines maintenant, et c’est génial, mais je n’étais pas vraiment sûr de ce qui se passait sous le capot lorsque j’en ajoutais une à mon application. Donc, ce billet de blog est pour m’aider à comprendre comment les gemmes fonctionnent et j’espère vous aider aussi.

Une gemme ruby est du code ruby emballé que vous pouvez ajouter à votre application. Cela peut vous faire gagner du temps en utilisant du code que d’autres ont écrit pour résoudre des problèmes similaires. Par exemple, si vous voulez changer la couleur d’un texte, vous pouvez installer et utiliser la gemme colorize. Vous obtenez toutes ses fonctionnalités sans jamais avoir à écrire ce code vous-même.

Sinatra est une gemme, Rack est une gemme, et j’ai été surpris d’apprendre que même Rails est une gemme. Toutes les gemmes publiques sont publiées par l’intermédiaire de RubyGems.org. C’est là que les gens peuvent contribuer et les partager avec la communauté.

Commençons par installer une gemme

Choisissons une gemme et installons-la. J’ai choisi d’ajouter la gemme colorize à mon application, qui change la couleur d’une chaîne que nous passons. Vous pouvez exécuter gem install gem_name pour télécharger la gemme sur votre ordinateur et la rendre disponible pour vos applications. Vous vous demandez où se trouve cette gemme après son installation ? Vous pouvez exécuter gem which gem_name et il vous dira exactement où il est.

gem install colorize

Pour utiliser la gemme dans notre code, vous devrez exiger la gemme en haut de votre fichier en mettant require ‘gem_name’. Nous faisons cela pour avoir accès à la gemme et maintenant nous n’aurons pas à écrire notre propre code pour coloriser le texte.

requérir ‘colorize’

Maintenant que vous avez la gemme installée et requise, vous pouvez l’utiliser. Typiquement, si vous allez sur le repo GitHub de la gemme, vous trouverez des informations importantes sur ses fonctionnalités et comment les utiliser.

https://github.com/fazibear/colorize

Utilisons-la!

Donc nous avons lu le readme et maintenant nous voulons ajouter de la couleur à notre texte. J’ai ajouté trois couleurs différentes dans mon code, en appelant .colorze(:color) sur une chaîne.

Exécution du code

Génial ! Est-ce que ça n’a pas l’air bien ? Nous avons donc installé notre gemme et cela semble fonctionner, mais que faire si nous avons une application plus grande qui nécessite de nombreuses gemmes ? Appeler gem install et demander chaque gemme semble être beaucoup de travail. Il y a sûrement un moyen plus facile.

Bundler

Bundler rend nos vies beaucoup plus faciles. Qu’est-ce que bundler ? Eh bien c’est une gemme bien sûr ! Il suit chaque gemme et installe la gemme exacte et la version que vous devez utiliser dans votre application. Afin d’utiliser bundler, vous aurez besoin d’un Gemfile dans le répertoire de votre projet et à l’intérieur vous pouvez lister autant de gemmes que vous le souhaitez. Pour ce faire, il suffit d’ouvrir le Gemfile et d’ajouter la gemme ‘gem_name’.

Une fois que vous l’avez ajouté à votre Gemfile, assurez-vous d’exécuter bundle install dans votre terminal. Cela installera toutes les gemmes listées dans votre Gemfile, ainsi que leurs dépendances. Cela rend certainement les choses beaucoup plus faciles. Ce qui est génial, c’est que Ruby 2.6 et les versions ultérieures incluent bundler automatiquement, donc vous n’aurez pas besoin de l’installer vous-même.

Il semble que nous devions toujours ajouter require ‘gem_file’ en haut de nos fichiers, et cela semble également être beaucoup de travail si nous en avons beaucoup. Il s’avère que bundler a également pensé à cela. Vous pouvez ajouter require ‘bundler’ en haut de votre fichier .rb et écrire Bunlder.require(:default). Ce que cela fait sous le capot est d’appeler require ‘gem_name’ pour chaque gemme que vous avez dans votre gemfile.

Bundler.require(:default)

Une fois que vous avez exécuté bundle install, vous pouvez remarquer que beaucoup de gemmes que vous n’avez pas ajoutées sont installées. Pourquoi cela ? De nombreuses gemmes nécessitent que d’autres gemmes soient installées en même temps qu’elles. Par exemple, rails nécessitera de nombreuses autres gemmes et ces gemmes peuvent nécessiter d’autres gemmes et ainsi de suite. Bundler s’assurera que toutes les versions de gemmes installées sont compatibles entre elles.

Après avoir trouvé les bonnes versions de chaque gemme, il enregistre ces versions dans un autre fichier appelé Gemfile.lock. Cela permet d’installer exactement la même version sur à chaque machine qui devra exécuter cette application.

Un fichier Gemfile.lock

Vous pouvez voir dans mon Gemfile.lock que lolize a besoin de la gemme paint et des versions qu’il peut utiliser. Donc bundler va récupérer cela et la bonne version pour nous. N’est-ce pas utile ? Merci bundler!

C’est donc ça ! J’espère que cela vous a aidé à comprendre la base d’une gemme et d’un bundler. Il y a beaucoup de gemmes là-bas que vous pouvez utiliser et vous pouvez les rechercher ici. https://rubygems.org/.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.