HOWTO · Ruby

Cambiar la versión de Ruby en Mac

Demostraremos cómo cambiar la versión de Ruby en Mac.

En esta página

Para cambiar entre versiones de Ruby en una Mac, usa un gestor de versiones como rbenv o RVM. Puedes elegir una versión local para un proyecto o una global para tu shell. Bundler puede comprobar que un proyecto use la versión de Ruby declarada, pero no instala Ruby ni cambia de versión. A continuación se explican ambos gestores; elige uno y comprueba que tu shell encuentre la versión seleccionada.

Elegir un gestor de versiones de Ruby para tu Mac

Usa rbenv si buscas una herramienta sencilla que seleccione Ruby mediante el PATH de tu shell y pueda leer el archivo .ruby-version de un proyecto. Elige RVM si prefieres un gestor que también ofrezca gemsets de Ruby y una administración más amplia del entorno. Evita configurar ambos para que modifiquen los mismos archivos de inicio de la shell: los cambios de PATH que compiten entre sí pueden dificultar la identificación de la versión activa.

Las instalaciones de macOS varían, así que antes de cambiar nada, comprueba qué está disponible con ruby -v. No des por sentado que todas las Mac incluyen Ruby ni que un gestor de paquetes proporciona una versión «más reciente» determinada. Un gestor de versiones instala la versión específica que solicites; el compilador instalado y las bibliotecas del sistema pueden influir en qué versiones antiguas se pueden compilar.

Instalar y cambiar de versión de Ruby con rbenv

Si aún no tienes Homebrew, instálalo primero. Después, instala rbenv con brew install rbenv. En las configuraciones actuales de Homebrew, inicialízalo en tu shell con rbenv init; sigue las instrucciones del comando para tu shell y reinicia la terminal o vuelve a cargar su archivo de inicio. Algunas instrucciones antiguas de rbenv usan una línea de inicialización específica para cada shell, así que sigue las instrucciones correspondientes a la versión que instalaste.

Instala una versión de Ruby con rbenv install 3.2.2 (sustituye el ejemplo por la versión que necesite tu proyecto). Si el comando rbenv install no está disponible, instala el componente ruby-build mediante el método recomendado para tu instalación de rbenv y vuelve a intentarlo.

Elige el alcance de la versión:

  • En el directorio de un proyecto, ejecuta rbenv local 3.2.2. Esto escribe 3.2.2 en el archivo .ruby-version de ese directorio, para que rbenv seleccione esa versión allí y en sus subdirectorios.
  • Para usarla como versión predeterminada fuera de los directorios que tengan una configuración local, ejecuta rbenv global 3.2.2.

La configuración local tiene prioridad sobre la global. Comprueba la versión seleccionada con rbenv version y confirma que ruby -v y which ruby encuentren el intérprete esperado. Si ruby sigue apuntando a otro sitio, inicializa rbenv en la shell que realmente usas y comprueba que $(rbenv root)/shims aparezca en PATH antes que las demás rutas de Ruby.

Instalar y cambiar de versión de Ruby con RVM

RVM utiliza un instalador remoto. Antes de ejecutarlo, consulta las instrucciones de instalación del proyecto RVM; al canalizar directamente un script descargado a una shell, ejecutas código obtenido de la red. Después de instalar RVM según las instrucciones para tu shell, abre una terminal nueva o carga su integración con la shell. Puedes cargar una instalación existente en la sesión con source ~/.rvm/scripts/rvm.

Instala la versión de Ruby que necesite tu proyecto con rvm install 3.2.2 y selecciónala con rvm use 3.2.2. Para que sea la versión predeterminada en las shells nuevas, ejecuta rvm use 3.2.2 --default. En el directorio de un proyecto, rvm use 3.2.2 selecciona la versión para la shell actual; RVM también admite archivos de proyecto cuando su integración con la shell está configurada.

Comprueba el resultado con ruby -v y which ruby. Si sigue activa la versión anterior, confirma que RVM se haya cargado en la shell actual y revisa si otra herramienta de Ruby o la versión del sistema aparece antes en PATH. RVM y rbenv son herramientas distintas; los comandos de una no configuran la otra.

Usar Bundler para exigir una versión de Ruby en un proyecto

Un proyecto puede declarar en su Gemfile qué versión de Ruby necesita:

ruby "3.2.2"

Usa una versión compatible con el proyecto. Después, selecciona esa versión y ejecuta bundle install. Bundler compara el intérprete actual con el requisito del Gemfile e instala las gemas del proyecto; no descarga ni cambia de versión de Ruby. Si la versión activa no cumple el requisito, selecciona o instala una versión compatible con rbenv o RVM y vuelve a ejecutar Bundler.

Un archivo .ruby-version incluido en el repositorio puede ayudar al gestor a seleccionar automáticamente la versión de Ruby del proyecto. Manténlo alineado con el requisito del Gemfile y asegúrate de que la versión necesaria esté instalada en el entorno de cada desarrollador o de compilación.

Comprobar la versión activa de Ruby y resolver problemas frecuentes

Ejecuta estos comandos desde la misma terminal y el mismo directorio que usas para ejecutar la aplicación:

  • ruby -v muestra la versión del intérprete que ejecuta la shell.
  • which ruby indica qué ejecutable aparece primero en PATH.
  • rbenv version muestra la versión seleccionada y su origen cuando usas rbenv.
  • rvm current muestra la versión activa cuando usas RVM.

Este pequeño ejemplo en Ruby imprime la versión que informa el intérprete que lo ejecuta. La ejecución suministrada imprimió «Active Ruby: 3.1.2»; la etiqueta «Active Ruby» permanece en inglés en el ejemplo sin modificar.

puts "Active Ruby: #{RUBY_VERSION}"
Active Ruby: 3.1.2

Si un gestor indica la versión esperada, pero ruby -v muestra otra, es probable que la shell esté encontrando un ejecutable distinto. Comprueba que la inicialización del gestor esté en el archivo de inicio de la shell activa, abre una terminal nueva y vuelve a revisar PATH. Revisa también si hay un archivo .ruby-version en el directorio actual, ya que puede prevalecer sobre la selección global de rbenv. Si Bundler informa que no se cumple el requisito de Ruby, compara el requisito del Gemfile con ruby -v; cambiar solo las gemas no resolverá una incompatibilidad de intérprete.

Preguntas frecuentes

¿Puedo instalar más de una versión de Ruby?

Sí. Tanto rbenv como RVM pueden mantener instaladas varias versiones de Ruby. Selecciona la adecuada para todo el sistema o para un proyecto, en lugar de eliminar una versión que quizá use otro proyecto.

¿Cómo uso otra versión de Ruby solo para un proyecto?

Con rbenv, ejecuta rbenv local VERSION en el directorio del proyecto; el comando guarda la selección en .ruby-version. Con RVM, selecciona la versión en la shell del proyecto con rvm use VERSION y configura la compatibilidad de RVM con archivos de proyecto si quieres que la selección sea automática al entrar en el directorio. En ambos casos, asegúrate de que la versión esté instalada y compruébala con ruby -v.

¿Tengo que desinstalar la versión anterior de Ruby?

No. Conserva las versiones que necesiten otros proyectos. Si más adelante eliminas una, usa el comando de desinstalación del gestor que la instaló y comprueba primero que ningún proyecto dependa de ella.

¿Bundler cambia la versión activa de Ruby?

No. Una declaración ruby en el Gemfile permite que Bundler compruebe si el intérprete activo cumple el requisito del proyecto. Usa un gestor de versiones para instalar y seleccionar Ruby; después, ejecuta bundle install.