rbenv es una herramienta de gestión de versiones para el lenguaje de programación Ruby en sistemas tipo Unix. Es útil para cambiar entre múltiples versiones de Ruby en la misma máquina y para garantizar que cada proyecto en el que esté trabajando siempre se ejecute en la versión correcta de Ruby.
Después de que rbenv se inserte en su RUTA en el momento de la instalación, cualquier invocación de ruby
, gem
, bundler
u otro ejecutable relacionado con Ruby activará primero rbenv. Luego, rbenv escanea el directorio del proyecto actual en busca de un archivo llamado .ruby-version
. Si se encuentra, ese archivo determina la versión de Ruby que se debe usar dentro de ese directorio. Finalmente, rbenv busca esa versión de Ruby entre las instaladas en ~/.rbenv/versions/
.
Puedes elegir la versión Ruby para tu proyecto con, por ejemplo:
cd myproject
# choose Ruby version 3.1.2:
rbenv local 3.1.2
Al hacerlo, se creará o actualizará el archivo .ruby-version
en el directorio actual con la versión que haya elegido. Un proyecto suyo diferente que sea otro directorio podría estar usando una versión completamente diferente de Ruby; rbenv realizará una transición perfecta de una versión de Ruby a otra cuando cambie de proyecto.
Finalmente, casi todos los aspectos del mecanismo de rbenv se pueden personalizar mediante complementos escritos en bash.
La simplicidad de rbenv tiene sus ventajas, pero también algunas desventajas. Consulte la comparación de administradores de versiones para obtener más detalles y algunas alternativas.
En sistemas con administrador de paquetes Homebrew, se recomienda el método "Usar administradores de paquetes". En otros sistemas, “Basic Git Checkout” puede ser la forma más sencilla de garantizar que siempre esté instalando la última versión de rbenv.
Instale rbenv utilizando uno de los siguientes métodos.
En macOS o Linux, recomendamos instalar rbenv con Homebrew.
brew install rbenv
[!PRECAUCIÓN]
La versión de rbenv que está empaquetada y mantenida en los repositorios oficiales de Debian y Ubuntu está desactualizada . Para instalar la última versión, se recomienda instalar rbenv usando git.
sudo apt install rbenv
Archlinux tiene un paquete AUR para rbenv y puede instalarlo desde AUR siguiendo las instrucciones de esta página wiki.
Fedora tiene un paquete oficial que puedes instalar:
sudo dnf install rbenv
Configure su shell para cargar rbenv.
rbenv init
Cierra la ventana de tu Terminal y abre una nueva para que los cambios surtan efecto.
¡Eso es todo! Ahora está listo para instalar algunas versiones de Ruby.
Nota
Para una instalación más automatizada, puede utilizar rbenv-installer. Si no desea ejecutar scripts descargados desde una URL web o simplemente prefiere un enfoque manual, siga los pasos a continuación.
Esto le permitirá utilizar la última versión de rbenv sin necesidad de realizar una instalación en todo el sistema.
Clonar rbenv en ~/.rbenv
.
git clone https://github.com/rbenv/rbenv.git ~ /.rbenv
Configure su shell para cargar rbenv.
~ /.rbenv/bin/rbenv init
Si tiene curiosidad, consulte aquí para comprender qué hace init
.
Reinicie su shell para que estos cambios surtan efecto. (Por lo general, basta con abrir una nueva pestaña de terminal).
Al instalar rbenv manualmente , puede resultar útil observar cómo funcionan los scripts de finalización para varios shells. Los scripts de finalización ayudan a escribir comandos rbenv al expandir los nombres de los comandos rbenv ingresados parcialmente y los indicadores de opciones; normalmente, esto se invoca presionando la tecla Tab en un shell interactivo.
El script de finalización de bash para rbenv se envía con el proyecto y se carga mediante el mecanismo rbenv init
.
El script de finalización zsh se incluye con el proyecto, pero debe agregarse a FPATH en zsh antes de que el shell pueda descubrirlo. Una forma de hacer esto sería editar ~/.zshrc
:
# assuming that rbenv was installed to `~/.rbenv`
FPATH= ~ /.rbenv/completions: " $FPATH "
autoload -U compinit
compinit
El script de finalización de pescado para rbenv se envía con el propio caparazón de pescado y el proyecto rbenv no lo mantiene.
El comando rbenv install
no se incluye con rbenv listo para usar, pero lo proporciona el complemento ruby-build.
Antes de intentar instalar Ruby, verifique que su entorno de compilación tenga las herramientas y bibliotecas necesarias . Entonces:
# list latest stable versions:
rbenv install -l
# list all local versions:
rbenv install -L
# install a Ruby version:
rbenv install 3.1.2
Para solucionar problemas de escenarios de BUILD FAILED
, consulte la sección de Discusiones de Ruby-build.
Nota
Si no se encontró el comando rbenv install
, puede instalar ruby-build como complemento:
git clone https://github.com/rbenv/ruby-build.git " $( rbenv root ) " /plugins/ruby-build
Configure una versión de Ruby para finalizar la instalación y comenzar a usar Ruby:
rbenv global 3.1.2 # set the default Ruby version for this machine
# or:
rbenv local 3.1.2 # set the Ruby version for this directory
Como alternativa al comando rbenv install
, puede descargar y compilar Ruby manualmente como un subdirectorio de ~/.rbenv/versions
. Una entrada en ese directorio también puede ser un enlace simbólico a una versión de Ruby instalada en otra parte del sistema de archivos.
Seleccione una versión de Ruby para su proyecto usando rbenv local 3.1.2
, por ejemplo. Luego, procede a instalar las gemas como lo harías normalmente:
gem install bundler
Nota
No deberías usar sudo para instalar gemas. Normalmente, las versiones de Ruby se instalarán en su directorio de inicio y, por lo tanto, su usuario podrá escribirlas. Si recibe el error "no tiene permisos de escritura" al instalar gemas, es probable que la versión de Ruby de su "sistema" siga siendo la predeterminada global. Cambie eso con rbenv global <version>
y vuelva a intentarlo.
Verifique la ubicación donde se están instalando las gemas con gem env
:
gem env home
# => ~/.rbenv/versions/<version>/lib/ruby/gems/...
A medida que pasa el tiempo, las versiones de Ruby que instales se acumularán en tu directorio ~/.rbenv/versions
.
Para eliminar versiones antiguas de Ruby, simplemente rm -rf
en el directorio de la versión que desea eliminar. Puede encontrar el directorio de una versión particular de Ruby con el comando rbenv prefix
, por ejemplo, rbenv prefix 2.7.0
.
El complemento Ruby-build proporciona un comando rbenv uninstall
para automatizar el proceso de eliminación.
Los principales comandos de rbenv que necesitas saber son:
Enumera todas las versiones de Ruby conocidas por rbenv y muestra un asterisco junto a la versión actualmente activa.
$ rbenv versions
1.8.7-p352
1.9.2-p290
* 1.9.3-p327 (set by /Users/sam/.rbenv/version)
jruby-1.7.1
rbx-1.2.4
ree-1.8.7-2011.03
Muestra la versión de Ruby actualmente activa, junto con información sobre cómo se configuró.
$ rbenv version
1.9.3-p327 (set by /Users/sam/.rbenv/version)
Establece una versión de Ruby específica de la aplicación local escribiendo el nombre de la versión en un archivo .ruby-version
en el directorio actual. Esta versión anula la versión global y se puede anular configurando la variable de entorno RBENV_VERSION
o con el comando rbenv shell
.
rbenv local 3.1.2
Cuando se ejecuta sin un número de versión, rbenv local
informa la versión local configurada actualmente. También puedes desarmar la versión local:
rbenv local --unset
Establece la versión global de Ruby que se utilizará en todos los shells escribiendo el nombre de la versión en el archivo ~/.rbenv/version
. Esta versión se puede anular mediante un archivo .ruby-version
específico de la aplicación o configurando la variable de entorno RBENV_VERSION
.
rbenv global 3.1.2
El system
de nombres de versión especial le dice a rbenv que use el sistema Ruby (detectado buscando su $PATH
).
Cuando se ejecuta sin un número de versión, rbenv global
informa la versión global configurada actualmente.
Establece una versión de Ruby específica del shell configurando la variable de entorno RBENV_VERSION
en su shell. Esta versión anula las versiones específicas de la aplicación y la versión global.
rbenv shell jruby-1.7.1
Cuando se ejecuta sin un número de versión, rbenv shell
informa el valor actual de RBENV_VERSION
. También puedes desarmar la versión del shell:
rbenv shell --unset
Tenga en cuenta que necesitará habilitar la integración del shell de rbenv (paso 3 de las instrucciones de instalación) para poder utilizar este comando. Si prefiere no utilizar la integración de shell, simplemente puede configurar la variable RBENV_VERSION
usted mismo:
export RBENV_VERSION=jruby-1.7.1
Instala shims para todos los ejecutables de Ruby conocidos por rbenv ( ~/.rbenv/versions/*/bin/*
). Normalmente no es necesario ejecutar este comando, ya que se ejecutará automáticamente después de instalar gemas.
rbenv rehash
Muestra la ruta completa al ejecutable que rbenv invocará cuando ejecute el comando dado.
$ rbenv which irb
/Users/sam/.rbenv/versions/1.9.3-p327/bin/irb
Enumera todas las versiones de Ruby que contienen el nombre ejecutable especificado.
$ rbenv whence rackup
1.9.3-p327
jruby-1.7.1
ree-1.8.7-2011.03
Puede afectar el funcionamiento de rbenv con las siguientes configuraciones:
nombre | por defecto | descripción |
---|---|---|
RBENV_VERSION | Especifica la versión de Ruby que se utilizará. Véase también rbenv shell | |
RBENV_ROOT | ~/.rbenv | Define el directorio en el que residen las versiones y correcciones de Ruby. Ver también rbenv root |
RBENV_DEBUG | Genera información de depuración. También como: rbenv --debug <subcommand> | |
RBENV_HOOK_PATH | ver wiki | Lista de rutas separadas por dos puntos buscadas para ganchos rbenv. |
RBENV_DIR | $PWD | Directorio para comenzar a buscar archivos .ruby-version . |
rbenv init
es un comando auxiliar para iniciar rbenv en un shell. Este asistente forma parte de las instrucciones de instalación recomendadas, pero es opcional, ya que un usuario avanzado puede configurar las siguientes tareas manualmente. Esto es lo que hace el comando cuando un shell eval
su salida durante su inicio:
Agrega el ejecutable rbenv
a PATH si es necesario.
Antepone el directorio ~/.rbenv/shims
a PATH. Este es básicamente el único requisito para que rbenv funcione correctamente.
Instala la finalización del shell bash para los comandos rbenv.
Regenera calzas rbenv. Si este paso ralentiza el inicio de su shell, puede invocar rbenv init -
con el indicador --no-rehash
.
Instala el despachador "sh". Este bit también es opcional, pero permite que rbenv y los complementos cambien las variables en su shell actual, haciendo posibles comandos como rbenv shell
.
Puede ejecutar rbenv init -
usted mismo para inspeccionar el script generado.
La simplicidad de rbenv hace que sea fácil desactivarlo temporalmente o desinstalarlo del sistema.
Para deshabilitar la administración de rbenv de sus versiones de Ruby, simplemente comente o elimine la línea rbenv init
de la configuración de inicio de su shell. Esto eliminará el directorio rbenv shims de PATH, y futuras invocaciones como ruby
ejecutarán la versión Ruby del sistema, omitiendo rbenv por completo.
Mientras esté deshabilitado, rbenv
seguirá siendo accesible en la línea de comando, pero sus aplicaciones Ruby no se verán afectadas por el cambio de versión.
Para desinstalar completamente rbenv, realice el paso (1) y luego elimine el directorio raíz de rbenv. Esto eliminará todas las versiones de Ruby que se instalaron en `rbenv root`/versions/
:
rm -rf "$(rbenv root)"
Si instaló rbenv usando un administrador de paquetes, como paso final realice la eliminación del paquete rbenv:
brew uninstall rbenv
sudo apt purge rbenv
sudo pacman -R rbenv
Las pruebas se ejecutan utilizando Bats:
$ bats test
$ bats test/<file>.bats
No dude en enviar solicitudes de extracción y registrar errores en el rastreador de problemas.