Skip to main content

Cómo instalar Ruby en macOS para desarrollo local

Escrito por
blog feature ruby security

27 de septiembre de 2022

0 minutos de lectura

Si estás empezando a desarrollar con Ruby o Ruby on Rails, te conviene saber lo siguiente:

  1. Cómo instalar Ruby correctamente en Mac.

  2. Cómo configurar un entorno de desarrollo local que no entre en conflicto con brew ni con una instalación existente de Ruby 2.7 en Mac.

En este tutorial aprenderás a hacer ambas cosas. Si tienes una de las nuevas laptops Mac con M1, no te preocupes: este tutorial también sirve para instalar Ruby en Mac M1.

Nunca ejecutes brew install ruby

Algunas guías y artículos de blog te indicarán que instales Ruby ejecutando brew install ruby o que actualices las versiones existentes de Ruby en macOS ejecutando el comando update ruby mac. Te recomiendo evitarlo por completo.

Dicho esto, el usuario de Reddit postmodern compartió en un hilo sobre Ruby que probablemente podrías indicarle a la instalación de brew que se instale explícitamente en otro directorio. De forma predeterminada, Brew instala en /usr/local y, según postmodern, esto no interfiere con los scripts de Ruby del sistema Apple porque la ubicación de su intérprete está codificada en /usr/bin/ruby. También señala que Apple planea dejar de admitir las versiones preinstaladas de Python, Ruby y Perl.

¿Por qué no puedes usar el Ruby del sistema en Mac?

Si ejecutas comandos que cambian la versión nativa de Ruby, como brew install ruby o brew uninstall ruby, corres el riesgo de dañar funciones y capacidades de macOS (esto también se aplica a Mac M1).

También es importante señalar que la versión de Ruby preinstalada en macOS está desactualizada. En una nueva laptop M1 de 2022, por ejemplo, corresponde a ruby 2.6.8p205. La versión más reciente, Ruby 3.1.2, se lanzó en abril de 2022 y representa una actualización importante frente a la que viene preinstalada en macOS.

Probablemente quieras usar Ruby 3 en un entorno de desarrollo local, lo cual es una muy buena razón para dejar de usar las versiones preinstaladas de Ruby. Además, podrás elegir con qué versión quieres trabajar. Para lograrlo, usaremos entornos virtuales de Ruby.

¿Cómo puedo comprobar qué versión de Ruby está instalada en mi Mac?

Para comprobar qué versión del intérprete de Ruby tienes instalada de forma nativa, ejecuta este comando:

/usr/bin/ruby --version

Si no actualizaste el sistema, la versión de macOS Monterey incluye Ruby 2.6.8. Si lo actualizaste o administras las versiones de Ruby con rbenv, rvm u otros administradores de versiones de Ruby, es posible que veas otra versión. A veces, también puedes encontrar Ruby en la ruta /usr/local/bin/ruby si se instaló con el administrador de paquetes Homebrew para macOS.

¿Dónde está la carpeta de Ruby en Mac?

El intérprete de Ruby suele encontrarse de forma nativa en macOS en las rutas /usr/bin/ruby o /usr/local/bin/ruby, según dónde se haya instalado. El sistema operativo instala y administra de forma nativa las gemas de Ruby en macOS. No se recomienda usar sudo gem install ni modificar esas gemas de Ruby. En su lugar, considera instalar un entorno virtual de Ruby con una herramienta como rbenv.

El entorno virtual de Ruby

Un concepto muy útil y familiar en otros lenguajes de programación y sus herramientas es el entorno virtual de Ruby. Si usaste virtualenv de Python o nvm de Node.js, cambiar al virutalenv de Ruby te resultará sencillo. Para empezar, solo necesitas algunas herramientas del ecosistema Ruby, como rbenv o rvm.

Estas herramientas evitan los conflictos con la versión nativa de Ruby en Mac: descargan el código fuente de Ruby de Internet, lo compilan localmente y lo ponen a disposición en una ruta. Luego te indican que agregues la ruta de este nuevo directorio al shell que prefieras, para que la nueva versión de Ruby esté disponible al abrir una nueva ventana de terminal.

En esencia, son administradores de versiones de Ruby que te permiten cambiar rápidamente entre distintas versiones del entorno de ejecución de Ruby según lo necesites, en función del directorio de instalación de Ruby configurado.

¿Deberías usar rbenv o rvm?

Dos herramientas populares para crear entornos virtuales de Ruby son rbenv y rvm. Como las herramientas y versiones específicas de los entornos suelen quedar desactualizadas a medida que avanza la industria, no compararé en detalle las funciones de rbenv y rvm1. En cambio, les pedí su opinión a algunos amigos desarrolladores expertos en Ruby y elegí rbenv, ya que la mayoría lo recomendó.

Otras herramientas de administración de entornos virtuales de Ruby que todavía no he explorado, pero que vale la pena mencionar, son chruby y ruby-install.

Empecemos con rbenv

El proyecto de código abierto rbenv está alojado en GitHub, donde también puedes resolver problemas y consultar la documentación actualizada en el README de rbenv.

Cómo instalar Ruby con rbenv

Como con muchas otras herramientas, usaremos el popular administrador de paquetes Homebrew para macOS. Ejecuta el siguiente comando en la terminal:

brew install rbenv ruby-build

Una vez que todo esté instalado, debemos indicarle a rbenv que configure nuestro shell para usar la versión del entorno de ejecución de Ruby que instalamos con rbenv cada vez que abramos una nueva ventana de terminal para escribir comandos en la línea de comandos (en lugar de la versión preinstalada de Ruby 2.6.8 en macOS).

Para configurar rbenv con tu shell, ejecuta el siguiente comando:

rbenv init

Sigue las instrucciones que aparezcan en pantalla si debes realizar alguna configuración adicional. Es posible que tengas que pegar un comando en el archivo de configuración de tu shell. Si usas macOS y no cambiaste el Z Shell (ZSH) predeterminado, asegúrate de agregar la siguiente línea de código al principio del archivo ~/.zshrc:

eval "$(rbenv init - zsh)"

El proceso de instalación de rbenv ya terminó. Si quieres verificar que todo esté configurado correctamente, puedes ejecutar la herramienta rbenv-doctor que ofrece el proyecto de rbenv en GitHub:

  1. Abre una nueva ventana de terminal para cargar el nuevo entorno de rbenv.

  2. Ejecuta el comando:

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

Advertencia: No debes tomar este comando a la ligera, ya que estás enviando a través de una canalización comandos a la shell de tu entorno de desarrollo que provienen de un repositorio público de código abierto en GitHub. Un actor malicioso podría haber manipulado el código fuente, así que te recomendamos revisar bien el código antes de ejecutar este comando.

¿Cómo se usa rbenv para instalar una nueva versión de Ruby?

¡Felicidades por crear tu propio entorno virtual de Ruby! Ahora que tienes rbenv configurado y en funcionamiento, puedes usarlo para administrar por completo tus versiones de Ruby.

Para empezar, consulta qué versiones de Ruby están disponibles para la instalación y así podrás elegir la más reciente o una versión específica. Para ver todas las versiones de Ruby con rbenv, ejecuta el siguiente comando:

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

El resultado fue:

2.6.10
2.7.6
3.0.4
3.1.2
jruby-9.3.6.0
mruby-3.1.0
picoruby-3.0.0
rbx-5.0
truffleruby-22.1.0
truffleruby+graalvm-22.1.0

Only latest stable releases for each Ruby implementation are shown.
Use 'rbenv install --list-all / -L' to show all local versions.

Después, puedes instalar una de estas versiones de Ruby. Usemos rbenv para instalar la versión 3.1.2:

rbenv install 3.1.2

El comando empezará a descargar los archivos de código fuente necesarios, los extraerá y compilará y, luego, instalará la versión 3.1.2 del entorno de ejecución de Ruby para que puedas usarla desde tu shell.

Cuando termines de instalarla, configúrala como la versión que se usará cada vez que se inicie tu shell. Para hacerlo, ejecuta:

rbenv global 3.1.2

Por último, puedes comprobar que funcione como esperas ejecutando ruby --version en tu shell. Deberías obtener un resultado similar a este:

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

Antes de terminar, una nota sobre rbenv global. Por el nombre del comando (global), me preocupaba que al ejecutarlo pudiera interferir de alguna manera con la versión de Ruby preinstalada en macOS. No es así. El comando hace referencia a la configuración global del usuario, que está en el archivo de configuración de rbenv ~/.rbenv/version. Esto significa que no está vinculado a un proyecto o directorio de Ruby específico.

Entonces, ¿qué sigue?

Vulnerabilidades de Ruby on Rails y de seguridad de Ruby

Antes de empezar a desarrollar con Ruby, consulta estos recursos para seguir las convenciones de codificación segura y proteger tus gemas de Ruby contra las vulnerabilidades. Son muy útiles tanto para las vulnerabilidades de Ruby on Rails que aparecen en las gemas de Ruby del framework como para las vulnerabilidades de seguridad de Ruby en general.

Te recomiendo estos recursos sobre desarrollo y seguridad de Ruby:

Por último, no olvides estar atento a la ejecución remota de código malicioso y otros riesgos de seguridad en las gemas de Ruby causados por ataques a la cadena de suministro, que hemos visto en distintos ecosistemas, incluido el de Ruby.

Prueba ahora nuestra herramienta gratuita verificador de código Ruby para ver cómo el motor de Snyk Code analiza tu código en busca de problemas de seguridad y calidad.

Comienza con Capture the Flag

Aprende a resolver desafíos de Capture the Flag con nuestro taller virtual 101 a pedido.

Leer más

blog feature snyk container custom base recommendations
Blog

Presentamos Evo Agentic AppSec: seguridad al ritmo del desarrollo con IA

El desarrollo impulsado por IA supera el ritmo de los flujos de trabajo de seguridad tradicionales. Agentic AppSec de Snyk usa agentes de seguridad para encontrar, corregir y verificar vulnerabilidades de forma continua, mientras las personas definen el estándar.

blog feature ai violet
Blog

VulnBump: ¿Pueden los agentes de IA corregir dependencias vulnerables sin romper la compilación?

VulnBump prueba agentes de IA en 307 actualizaciones reales de dependencias. Una corrección cuenta solo si elimina la vulnerabilidad y mantiene en verde la compilación y las pruebas.

Blog

Los modelos de frontera encontraron las vulnerabilidades. Solo el atacante encontró las cadenas.

El análisis estático encontró las fallas, pero solo las pruebas de ataque en vivo demostraron cómo podían encadenarse para provocar brechas. Una comparación de Evo COS, Claude Security y Claude Code Security.