¿Cómo usar la versión específica de ruby ​​para el script de shell con rbenv?

8

Voy a escribir un guión corto en rubí. Y quiero especificar la versión de ruby ​​por shebang o de otra manera.

Usaré el script en muchos entornos. Estoy usando rbenv en los entornos, pero no estoy seguro de qué versión de ruby ​​está instalada.

El script debe fallar si la versión especificada de ruby ​​no está instalada.

¿Cómo puedo hacerlo? ¿Hay alguna buena manera que debería seguir?

hierro y
fuente

Respuestas:

7

Según los documentos oficiales , parece que solo necesita prefijar sus scripts de esta manera:

#!/usr/bin/env ruby

Y luego haga una de las siguientes cosas para saber rbenvqué versión de Ruby usar:

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

Elegir la versión Ruby

Cuando ejecuta un calce, rbenvdetermina qué versión de Ruby usar al leerla de las siguientes fuentes, en este orden:

  1. La RBENV_VERSIONvariable de entorno, si se especifica. Puede usar el rbenvcomando de shell para establecer esta variable de entorno en su sesión de shell actual.

  2. El primer .ruby-versionarchivo encontrado al buscar el directorio del script que está ejecutando y cada uno de sus directorios principales hasta llegar a la raíz de su sistema de archivos.

  3. El primer .ruby-versionarchivo encontrado al buscar el directorio de trabajo actual y cada uno de sus directorios principales hasta llegar a la raíz de su sistema de archivos. Puede modificar el .ruby-versionarchivo en el directorio de trabajo actual con el rbenvcomando local.

  4. El ~/.rbenv/versionarchivo global . Puede modificar este archivo con el rbenvcomando global. Si el archivo de versión global no está presente, se rbenvsupone que desea utilizar el "sistema" Ruby, es decir, cualquier versión que se ejecute si rbenvno estuviera en su camino.

Luego puede usar este comando para crear un .ruby-versionarchivo en el directorio junto con el script Ruby.

$ rbenv local 1.9.3-p327
slm
fuente
En desuso ahora; Por documento especificado; Ahora, cuando ejecuta scripts o binstubs en una aplicación con un archivo de versión .ruby, rbenv usará automáticamente la versión Ruby especificada de la aplicación, independientemente del directorio desde el que se ejecuten.
AnneTheAgile