Comment utiliser la version spécifiée de ruby ​​pour le script shell avec rbenv?

8

Je vais écrire un petit script en rubis. Et je veux spécifier la version rubis par shebang ou d'une autre manière.

J'utiliserai le script dans de nombreux environnements. J'utilise rbenv dans les environnements, mais je ne sais pas quelle version de ruby ​​est installée.

Le script doit échouer si la version spécifiée de ruby ​​n'est pas installée.

Comment puis-je le faire? Y a-t-il une bonne façon de suivre?

fer à repasser
la source

Réponses:

7

Selon les documents officiels, il semble que vous ayez juste besoin de préfixer vos scripts comme ceci:

#!/usr/bin/env ruby

Effectuez ensuite l'une des opérations suivantes pour savoir rbenvquelle version de Ruby utiliser:

extrait: https://github.com/sstephenson/rbenv

Choisir la version Ruby

Lorsque vous exécutez un shim, rbenvdétermine la version de Ruby à utiliser en la lisant à partir des sources suivantes, dans cet ordre:

  1. La RBENV_VERSIONvariable d'environnement, si spécifiée. Vous pouvez utiliser la rbenvcommande shell pour définir cette variable d'environnement dans votre session shell actuelle.

  2. Le premier .ruby-versionfichier trouvé en recherchant le répertoire du script que vous exécutez et chacun de ses répertoires parents jusqu'à atteindre la racine de votre système de fichiers.

  3. Le premier .ruby-versionfichier trouvé en recherchant le répertoire de travail actuel et chacun de ses répertoires parents jusqu'à atteindre la racine de votre système de fichiers. Vous pouvez modifier le .ruby-versionfichier dans le répertoire de travail actuel avec la rbenvcommande locale.

  4. Le ~/.rbenv/versionfichier global . Vous pouvez modifier ce fichier à l'aide de la rbenvcommande globale. Si le fichier de version globale n'est pas présent, rbenvsuppose que vous souhaitez utiliser le Ruby «système», c'est-à-dire quelle que soit la version qui serait exécutée si elle rbenvn'était pas sur votre chemin.

Vous pouvez ensuite utiliser cette commande pour créer un .ruby-versionfichier dans le répertoire avec le script Ruby.

$ rbenv local 1.9.3-p327
slm
la source
Obsolète maintenant; Par doc spécifié; Désormais, lorsque vous exécutez des scripts ou des binstubs dans une application avec un fichier de version .ruby, rbenv utilise automatiquement la version Ruby spécifiée de l'application, quel que soit le répertoire à partir duquel ils sont exécutés.
AnneTheAgile