Alguien te podría haber dicho alguna vez, "No utilices el sistema Ruby". Es buen consejo, pero, ¿por qué? Vamos a averiguarlo.

¿Cuál Ruby tienes?

MacOS viene con un "sistema Ruby" preinstalado.

$ which ruby
/usr/bin/ruby

Si ves /usr/bin/ruby, es el sistema Ruby de MacOS pre-instalado.

Está bien usar el sistema Ruby para ejecutar scripts de administrador de sistemas, siempre y cuando no alteres el sistema Ruby al intentar actualizar o agregar gemas.

Pero no querrías usarlo cuando estés desarrollando proyectos en Ruby.

Ruby para desarrollo

Para desarrollar proyectos con Ruby, debes instalar Ruby con Homebrew o utilizar un administrador de versiones tales como asdf, chruby, rbenv o rvm.

Un administrador de versiones ayuda si estás haciendo malabarismos con varios proyectos y no puedas actualizarlos todos a la vez. Para obtener una guía que compare los administradores de versiones y muestre la mejor manera de instalar Ruby, ve mi artículo Install Ruby on a Mac (en inglés).

¿Pero por qué no utilizar Ruby predeterminado en macOS? Veamos las razones por qué es una mala idea usar el Ruby predeterminado en MacOS para el desarrollo web.

Problemas con la instalación de Gem

RubyGems son bibliotecas de software listas para usar que hacen que el desarrollo en Ruby sea fácil y divertido. La mayoría de proyectos en Ruby utilizan al menos algunas gemas.

Si usas el sistema Ruby de Mac, al ejecutar gem install intentará guardar las gemas al directorio del sistema Ruby /Library/Ruby/Gems/2.6.0. Ese directorio es propiedad del root, el superusuario del sistema. Los usuarios ordinarios no están autorizados para escribir en él, (y realmente no debes alterar este directorio).

Si intentas instalar una gema, por ejemplo em install rails, te dará un error de permisos.

Viola el sistema de seguridad

Los sistemas basados en Unix son potentes, así que hay una solución alternativa. Puedes instalar gemas como superusuario para anular la restricción de permisos. ¡Pero no hagas esto!

$ sudo gem install rails

En cualquier momento estarás a punto de ejecutar sudo. Deberías detenerte y preguntarte si estás a punto de dispararte en el pie.

En este caso, necesitas sudo porque estás alterando archivos del sistema que son manejados por el SO. ¡No lo hagas! Podrías dejar al sistema en un estado roto o comprometido. O incluso peor, una gema podría contener código malicioso que altere tu computadora.

Administrador de gema

Los desarrolladores experimentados usan Bundler para instalar gemas y manejar sus dependencias.

Imagina que tú tienes proyectos que usan diferentes versiones de una gema (tal vez hubo un nuevo lanzamiento de gema entre tus proyectos). O quizás dos gemas distintas en tu proyecto dependen de diferentes versiones de una gema dependiente.

Bundler usa un Gemfile en tu directorio del proyecto para mantener rastreo de las gemas que necesitas. Si tuvieras que usar sudo para instalar gemas con el sistema Ruby, terminarías con un desorden de incompatibilidad de gemas en el directorio del sistema de Ruby.

Puedes solucionar el problema de permisos del sistema instalando Bundler con un comando que usa tu directorio de inicio para gemas. Pero es más fácil instalar Ruby con Homebrew o usar un administrador de versión y usar Bundler que viene instalado, el cual configurará correctamente tu entorno de desarrollo local.

Usa la versión más nueva de Ruby

Cuando empiezas un proyecto, utiliza la última versión de Ruby (es 3.0 en el momento que fue escrito este artículo).

El sistema Ruby en macOS Catalina o Big Sur es Ruby 2.6.3, el cual es viejo. Si recién acabas de empezar con Ruby, instala con Homebrew y trabaja en un proyecto con Ruby 3.0. Cuando empieces a construir otro proyecto, puede que sea el momento de instalar un administrador de versión para que puedas hacer malabarismos con proyectos con diferentes versiones de Ruby.

MacOS después de Big Sur

MacOS Big Sur es ahora la versión más actual. Apple dijo:

"Ejecuciones de lenguajes de programación con scripts como Python, Ruby, and Perl están incluidos en macOS para compatibilidad con software heredado. Futuras versiones de macOS no incluirán ejecución de lenguajes con script por defecto, y pudiera requerir que instales paquetes adicionales".

Si estás leyendo esto a finales del año 2021, es posible que el sistema Ruby ya haya desaparecido. Si no, prepárate para instalar Ruby con Homebrew o un administrador de versión.

Disfruta de Ruby

Para desarrolladores planeando construir aplicaciones web con Rails, he escrito una guía, Install Rails on a Mac (en inglés), que va más allá de Instalar Ruby in a Mac (en inglés) para mostrarte cómo elegir un administrador de versiones que funcionará con Node como también Ruby.

¡Disfruta el placer de programar en Ruby! Después de todo, es conocido como un lenguaje dedicado a la felicidad del programador. Pero recuerda, el sistema Ruby esta ahí para macOS, no para ti.