GNU/Linux >> Tutoriels Linux >  >> Linux

Comment :utiliser Bundler pour gérer les gemmes Ruby

Présentation

À mesure que les applications Ruby se développent, le nombre de bibliothèques externes utilisées par ces applications peut augmenter au même rythme, voire plus rapidement, dans certains cas. Cette croissance peut poser des problèmes lorsque les gems installent leurs dépendances. Si deux gemmes reposent sur des versions différentes de la même bibliothèque, l'installation des deux gemmes risque de créer un scénario d'erreur en raison d'incompatibilités de gemmes. Bundler, un joyau Ruby, vous offre un moyen simple de gérer ces joyaux et d'éviter les conflits, vous permettant de vous concentrer sur le code de votre application au lieu de résoudre les problèmes avec les bibliothèques de support.

Prérequis

  • Version Ruby – 2.2.1 ou plus récente

Remarque :cet article utilise vim pour l'édition de texte. Remplacez "vim" par l'éditeur de votre choix si vous préférez utiliser un autre outil d'édition de texte. (Et si vous vous retrouvez accidentellement coincé dans vim, voici quelques conseils pour vous aider à vous en sortir.)

.

Gérer les interdépendances complexes

Au fur et à mesure que votre application gagne en complexité, vous pouvez voir des conflits de version dans le gemset de votre application. Ces conflits peuvent empêcher votre application de fonctionner correctement à mesure que le nombre de gemmes que vous utilisez et le nombre d'interdépendances de gemmes augmentent. Vous pourriez envisager d'utiliser RVM de manière plus restrictive, mais cette solution ne vous donne que la possibilité de contrôler la version actuelle de Ruby et le gemset associé - elle ne gère pas les problèmes de dépendance de gem, qui peuvent survenir entre différentes versions de gem utilisant la même version de base de le langage Ruby. Passer en revue les dépendances de toutes les gemmes pour trouver ces conflits et télécharger des versions de gemmes compatibles est un processus long et fastidieux. Heureusement, nous pouvons utiliser la gemme Bundler pour gérer nos gemsets et éliminer les incertitudes liées à l'utilisation de bibliothèques partagées.
.

Installation de Bundler pour gérer les gemmes

Pour démarrer avec Bundler, nous devons d'abord installer la gemme :

gem install bundler

Notez que certaines versions de Ruby peuvent utiliser la forme gem2.2 install bundler .

Cette commande installe Bundler dans l'environnement d'exécution Ruby actuel. Ensuite, vous devez créer un Gemfile pour gérer les gemmes de votre application. Ajoutez un nouveau fichier dans le répertoire racine de votre application et ouvrez-le pour le modifier :

vim Gemfile

Remarque :Bundler, par défaut, recherche le nom de fichier Gemfile , en majuscule exactement comme indiqué. Cela échouera, par exemple, si vous avez plutôt nommé votre fichier gemfile .

Vous pouvez ajouter vos gemmes à ce stade, ou laisser le fichier vide si vous n'avez pas de dépendances de gemmes externes. Bundler utilise ce Gemfile lors du téléchargement et de l'installation de gems pour votre application.
.

Anatomie d'un Gemfile

Un Gemfile vous offre de nombreuses façons de gérer les ensembles de gemmes de votre application. Vous pouvez, par exemple, spécifier une nouvelle source de gemme dans votre Gemfile, qui sera recherchée lors de l'exécution de l'installation :

source 'https://rubygems.org'

Vous pouvez facilement ajouter de nouvelles dépendances gem en les plaçant sur des lignes individuelles, précédées du mot gem . Par exemple, la ligne suivante spécifie nokogiri comme dépendance gem pour votre application :

gem 'nokogiri'

Vous pouvez également spécifier des versions de gem spécifiques en utilisant la syntaxe RubyGems familière. La ligne suivante ajoute la gemme Rails, mais la limite à la version 3.0.0.beta3 de Rails :

gem 'rails', '3.0.0.beta3'

Vous pouvez également spécifier des groupes de gemmes qui ne s'exécutent que dans des environnements spécifiques. Par exemple, le bloc suivant installe rspec , guard , et factory_girl lorsque l'environnement Rails est soit test ou development :

group :test, :development do
    gem 'rspec'
    gem 'guard'
    gem 'factory_girl'
end

Ces exemples ne sont qu'un début. Il existe un certain nombre d'autres fonctionnalités utiles d'un Gemfile sur bundler.io.
.

Installer toutes les gemmes avec Bundler

Une fois que vous avez rempli votre Gemfile avec les gems à installer, vous pouvez installer tous les gems de votre environnement actuel avec la commande suivante :

bundle install

Cette commande analyse votre Gemfile et recherche toutes les gemmes indiquées à partir des sources disponibles à la fois sur votre système et dans le Gemfile lui-même. Il examine toutes les gemmes pour les dépendances partagées, puis génère un nouveau fichier (Gemfile.lock ) qui contient toutes les gemmes compatibles et leurs versions. Enfin, il parcourt le Gemfile.lock créé fichier, en installant chaque gemme pertinente. Une fois terminé, les joyaux de votre application seront disponibles pour être utilisés dans votre code d'application.
.

Autres commandes utiles de Bundler

En plus de supprimer tous les maux de tête liés à la gestion des gemmes avec des dépendances partagées, Bundler vous offre également plusieurs autres outils avec lesquels vous pouvez gérer l'ensemble de gemmes de votre application. Vous trouverez ci-dessous quelques exemples de commandes qui pourraient vous être utiles lors du développement :

Pour mettre à jour toutes les gemmes du Gemfile vers la dernière version compatible :

bundle update

Dans les environnements de production, au lieu de résoudre dynamiquement les gems à partir de toutes les sources disponibles, vous pouvez installer uniquement les gems spécifiés dans Gemfile.lock.

bundle install --deployment

Pour exécuter une commande dans le contexte du Gemfile d'une application :

bundle exec XXXX

Sans l'ajout de bundle exec , la commande XXXX s'exécuterait dans le contexte Ruby du système, qui peut contenir des gemmes incompatibles.

Vous pouvez consulter les autres commandes disponibles et leurs utilisations prévues ici.
.

Conclusion

Un problème courant parmi les langages de programmation est le concept de "l'enfer des dépendances", qui survient lorsque deux bibliothèques tierces ou plus s'appuient sur différentes versions de la même bibliothèque partagée. Bundler offre aux développeurs Ruby un outil facile à utiliser pour installer et gérer des ensembles de gemmes complexes. Il aide à résoudre tous les problèmes de dépendance et vous fournit un enregistrement de compatibilité pour toutes les dépendances de votre application. Grâce à l'utilisation de Bundler, vous pouvez rapidement résoudre les conflits dans vos gemmes consommées et recommencer à travailler sur la viande de votre code d'application.

Atlantique.Net

Atlantic.net propose un hébergement VPS ainsi que des services d'hébergement gérés qui incluent une couche de services gérés essentiels à vos forfaits d'hébergement. Contactez-nous dès aujourd'hui pour plus d'informations.

.
.


Linux
  1. Pare-feu Raspberry Pi :comment l'installer et le gérer à l'aide d'UFW

  2. Comment gérer les fichiers journaux à l'aide de Logrotate sous Linux

  3. Comment gérer graphiquement les autorisations Flatpak à l'aide de Flatseal

  4. Comment :ajouter des gemmes rubis et des sources de gemmes

  5. Comment installer Ruby Gems dans cPanel

Comment créer et gérer des partitions Linux à l'aide de Parted

Comment gérer le stockage local à l'aide de stratis | Chapeau rouge

Comment gérer les journaux système à l'aide de Webmin

Comment gérer les machines virtuelles dans KVM à l'aide de Virt-Manager

Comment déployer et gérer des thèmes fantômes à l'aide d'actions GitHub

Astuces Ubuntu :comment gérer des projets simples à l'aide de notes Tomboy