Skip to main content

Installer un environnement de développement Ruby en local sous macOS : ce qu’il faut savoir

Écrit par:
wordpress-sync/blog-feature-ruby-security

27 septembre 2022

0 minutes de lecture

Vous commencez tout juste à développer en Ruby ou Ruby on Rails ? Vous devez savoir :

  1. comment installer correctement Ruby sous Mac ;

  2. comment configurer un environnement de développement local qui n’entre pas en conflit avec Homebrew ou une installation existante de Ruby 2.6.8 pour Mac.

Ce tutoriel pourra vous éclairer sur ces deux points ! Vous disposez d’un ordinateur portable équipé d’une des nouvelles puces M1 ? Pas d’inquiétude, ce tutoriel en tient compte.

N’exécutez jamais la commande brew install ruby

Certains guides et articles de blog vous conseilleront d’installer Ruby en exécutant la commande brew install ruby ou en mettant à jour les versions déjà installées sur macOS avec la commande update ruby mac. Je vous recommande vivement de ne pas les écouter.

Cela dit, l’utilisateur de Reddit postmodernaffirme dans un fil consacré à Ruby qu’il est sans doute possible d’installer Ruby avec Homebrew dans un répertoire spécifique. Par défaut, Homebrew utilise /usr/local, ce qui, d’après postmodern, n’interfère pas avec les scripts Ruby du système Apple, car l’emplacement de l’interpréteur (/usr/bin/ruby) est codé en dur dans ces scripts. Il précise également qu’Apple prévoit de mettre au placard les versions de Python, Ruby et Perl préinstallées sur ses systèmes.

Pourquoi ne pas utiliser la version de Ruby préinstallée sur Mac ?

Si vous exécutez des commandes qui changent la version native de Ruby, par exemple brew install ruby ou encore brew uninstall ruby, vous risquez de rendre certaines fonctions de macOS inopérantes, y compris si vous utilisez un Mac avec puce M1.

Il convient également de noter que la version préinstallée de Ruby sur macOS est obsolète. Sur un ordinateur portable M1 flambant neuf de 2022, c’est en effet la version ruby 2.6.8p205 qui est installée. Or, en avril 2022, nous en sommes déjà la version 3.1.2, une évolution majeure.

Pour constituer votre environnement de développement local, vous privilégierez probablement Ruby 3, ce qui constitue une très bonne raison de ne pas utiliser la version préinstallée. Par ailleurs, sachez que vous pouvez choisir la version qui vous intéresse. Pour ce faire, vous devez utiliser des environnements virtuels.

Comment savoir quelle version de Ruby est installée sur mon Mac ?

Pour vérifier quelle est la version de l’interpréteur Ruby installée en natif, exécutez la commande suivante :

1/usr/bin/ruby --version

Si vous n’avez pas fait de mise à jour, macOS Monterey intègre normalement Ruby 2.6.8. Si vous avez effectué une mise à jour ou gérez les versions de Ruby avec rbenv, rvm ou un autre gestionnaire, la version affichée peut être différente. Parfois, Ruby peut aussi être installé dans /usr/local/bin/ruby. Ce chemin est utilisé par le gestionnaire de paquets Homebrew.

Où se trouve le dossier de Ruby sur Mac ?

L’interpréteur Ruby est souvent installé nativement sur macOS aux chemins /usr/bin/ruby ou /usr/local/bin/ruby. Les gemmes Ruby sont installées et gérées de manière native par macOS. L’utilisation de la commande sudo gem install et les modifications de ces gemmes sont déconseillées. Déployez plutôt un environnement virtuel Ruby avec un outil comme rbenv.

L’environnement virtuel Ruby

Un environnement virtuel Ruby est un concept très utile que l’on retrouve dans d’autres langages de programmation et leurs outils. Si vous avez déjà utilisé les outils virtualenv de Python ou nvm de Node.js, virtualenv de Ruby ne devrait vous poser aucun problème. Tout ce qu’il vous faut pour vous lancer, ce sont quelques utilitaires de l’écosystème Ruby, comme rbenv ou rvm.

Ces logiciels évitent les conflits avec la version native de Ruby sur Mac, car ils récupèrent le code source de Ruby directement sur Internet, le compilent en local et le rendent accessible depuis un chemin donné. Ils vous invitent ensuite à ajouter ce chemin dans le shell de votre choix, pour que cette nouvelle version de Ruby vous soit accessible dès que vous ouvrez de nouvelles interfaces de terminal.

En vérité, il s’agit de véritables gestionnaires de versions de Ruby qui vous permettent de passer rapidement d’une version d’exécution à l’autre en changeant simplement de répertoire d’installation.

rbenv ou rvm ?

rbenv et rvm sont tous deux des outils d’environnement virtuel Ruby appréciés. Les différents outils et versions de ce type tendent à être rapidement obsolètes, et je ne vais donc pas comparer rbenv et rvm1 en détail. J’ai préféré demander l’avis d’amis développeurs maîtrisant Ruby sur le bout des doigts, qui m’ont en majorité recommandé rbenv.

Je ne me suis pas penché sur d’autres gestionnaires d’environnements virtuels Ruby qui peuvent néanmoins être intéressants, comme chruby et ruby-install.

Lançons-nous avec rbenv

Le projet open source rbenv est hébergé sur GitHub. Vous y trouverez un fichier README réunissant de nombreuses informations et qui pourra vous aider à résoudre d’éventuelles erreurs.

Comment installer Ruby rbenv

Comme pour beaucoup d’autres outils, nous nous tournons vers Homebrew, le célèbre gestionnaire de paquets pour macOS. Exécutez la commande suivante dans votre terminal :

1brew install rbenv ruby-build

Une fois l’installation terminée, nous devons demander à rbenv de configurer notre shell pour utiliser la version d’exécution de Ruby que nous venons d’installer à l’ouverture d’une fenêtre de terminal et non pas la version préinstallée (2.6.8).

Pour configurer rbenv dans votre shell, exécutez la commande suivante :

1rbenv init

Suivez les instructions à l’écran si une configuration supplémentaire est nécessaire. Vous devrez peut-être coller une commande dans la configuration de votre shell. Si vous n’avez pas conservé le Z shell par défaut (ZSH), pensez à ajouter la ligne de code suivante tout en haut de votre fichier ~/.zshrc :

1eval "$(rbenv init - zsh)"

Le processus d’installation de rbenv est maintenant terminé. Lancez quelques tests diagnostiques pour vous assurer que la configuration s’est bien déroulée. Si c’est bien le cas, exécutez l’outil rbenv-doctor fourni par le projet GitHub de rbenv :

  1. Ouvrez une nouvelle fenêtre de terminal pour charger le nouvel environnement rbenv.

  2. Exécutez la commande suivante :

    curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | zsh

Avertissement : cette commande ne doit pas être exécutée à la légère, car vous envoyez à votre environnement de développement des commandes provenant d’un dépôt GitHub public et open source. Il est tout à fait possible qu’un acteur malveillant ait altéré ce code, et je vous encourage donc à le vérifier avant de continuer.

Comment utiliser rbenv pour installer une nouvelle version de Ruby ?

Félicitations, vous avez créé votre propre environnement virtuel Ruby ! Maintenant que vous disposez d’une installation rbenv fonctionnelle, nous pouvons l’utiliser pour gérer vos versions de Ruby.

Pour commencer, établissez la liste des versions de Ruby que vous pouvez installer. Vous pourrez ainsi choisir la plus récente ou une version spécifique. Pour répertorier toutes les versions de Ruby disponibles avec rbenv, exécutez la commande suivante :

1curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | zsh

Le résultat est le suivant :

12.6.10
22.7.6
33.0.4
43.1.2
5jruby-9.3.6.0
6mruby-3.1.0
7picoruby-3.0.0
8rbx-5.0
9truffleruby-22.1.0
10truffleruby+graalvm-22.1.0
11
12Only latest stable releases for each Ruby implementation are shown.
13Use 'rbenv install --list-all / -L' to show all local versions.

Vous pouvez ensuite installer celle qui vous intéresse. Utilisons rbenv pour installer la version 3.1.2 :

1rbenv install 3.1.2

La commande va récupérer le code source correspondant, l’extraire et le compiler, puis installer la version d’exécution de Ruby 3.1.2 disponible pour votre shell.

Une fois l’installation terminée, vous devez faire en sorte que cette version soit celle utilisée à chaque démarrage de votre shell. Pour ce faire, vous devez exécuter la commande suivante :

1rbenv global 3.1.2

Enfin, vous pouvez vérifier que tout fonctionne comme prévu en exécutant ruby --version dans votre shell. Vous devriez obtenir un résultat ressemblant à ceci :

1ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [arm64-darwin21]

Avant de terminer, quelques mots sur rbenv global. En raison du nom de la commande (global), je craignais que son exécution puisse interférer avec la version de Ruby préinstallée sur macOS. Ce n’est pas le cas. Cette commande fait en réalité référence à la configuration utilisateur globale, à savoir le fichier de configuration de rbenv situé à l’emplacement ~/.rbenv/version. Elle n’est pas liée à un projet/répertoire Ruby particulier.

Et ensuite ?

Vulnérabilités de Ruby on Rails et vulnérabilités de sécurité de Ruby

Avant de vous précipiter sur vos projets de développement Ruby, penchez-vous sur les ressources suivantes pour vous assurer de respecter des conventions de code sécurisé et de préserver vos gemmes Ruby de toute vulnérabilité. Elles vous seront d’un grand secours pour les vulnérabilités Ruby on Rails liées aux gemmes du framework, ainsi que pour les vulnérabilités de sécurité de Ruby en général.

Je vous recommande vivement de consulter les documents suivants, liés au développement et à la sécurité avec Ruby :

Enfin, n’oubliez pas de vous tenir informé des exécutions de code malveillant à distance et des autres risques de sécurité des gemmes Ruby en lien avec des attaques de la chaîne d’approvisionnement. Nous avons observé ce type de phénomène dans divers écosystèmes, Ruby compris.

Essayez notre vérificateur de code Ruby gratuit sans plus attendre pour découvrir comment le moteur Snyk Code détecte les problèmes de sécurité et de qualité de votre code.