Cómo configurar un entorno React Native en macOS de forma correcta usando rbenv, Bundler y CocoaPods (compatible con React Native 0.79.7)
Establecer un entorno de desarrollo para React Native en macOS, especialmente cuando se desarrolla para iOS, puede presentar diversos retos. El uso de múltiples versiones de Ruby, diferencias de arquitectura en procesadores Apple Silicon (como M1, M2 o M3) y las dependencias específicas que exige React Native pueden generar errores difíciles de depurar si no se cuenta con una configuración clara y aislada.
En este artículo intentare explicar paso a paso cómo configurar un entorno funcional, reproducible y compatible con React Native 0.79.7, a partir de una experiencia real enfrentando y resolviendo problemas relacionados con Ruby, CocoaPods y Bundler.
¿Qué suele fallar?
En entornos no controlados, es común encontrarse con problemas como:
- Conflictos entre versiones del sistema y versiones instaladas por el usuario (Ruby, CocoaPods)
- Uso simultáneo de herramientas como RVM y rbenv
bundle exec pod installque no reconoce la versión de CocoaPods necesaria- Diferencias entre gems instaladas globalmente y localmente
- Incompatibilidades derivadas de la arquitectura del procesador (
arm64vs.x86_64)
Estos conflictos no siempre se detectan fácilmente, y pueden provocar que comandos como yarn ios fallen sin una razón clara.
Objetivo de esta configuración
La meta es lograr un entorno que:
- Utilice una versión de Ruby aislada y controlada por el proyecto
- Gestione las dependencias Ruby (como
cocoapods) de forma local medianteBundler - Sea compatible con React Native 0.79.7
- Funcione correctamente en macOS con chip Apple Silicon, sin necesidad de ajustes arquitectónicos como
arch -x86_64
Paso 1: Instalar rbenv y configurar Ruby
Primero, se recomienda instalar rbenv junto con ruby-build utilizando Homebrew:
brew install rbenv ruby-build
Luego, se debe agregar la configuración de rbenv al archivo de inicio de la terminal. Aquí es importante considerar que no todos los usuarios utilizan ~/.zshrc (yo lo uso) . En sistemas con Zsh (la shell por defecto en macOS), puede ser necesario editar también:
~/.zprofile~/.bash_profile~/.profile
Se puede agregar lo siguiente en el archivo correspondiente:
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
Una vez hecho esto, se sugiere cerrar completamente la terminal y volver a abrirla. Luego, se puede verificar que rbenv esté funcionando correctamente con:
ruby -v
which ruby
La salida esperada debe mostrar algo como:
ruby 3.1.2p20 (...)
/Users/usuario/.rbenv/shims/ruby
Paso 2: Eliminar configuraciones conflictivas y versiones globales de Ruby
Si después de los pasos anteriores, aún se muestra la ruta del sistema (/usr/bin/ruby) o una versión controlada por RVM, es probable que otra configuración esté interfiriendo.
En algunos casos, puede ser necesario revisar y eliminar líneas relacionadas con RVM en los archivos mencionados antes. Y si se instaló Ruby globalmente con Homebrew u otro método, podría ser útil desinstalarlo completamente:
brew uninstall ruby
Esto permitirá que rbenv sea quien controle completamente el entorno Ruby.
Paso 3: Crear un Gemfile en el directorio iOS del proyecto
Dentro del proyecto React Native, se recomienda crear un archivo Gemfile en la carpeta ios, con el siguiente contenido:
source 'https://rubygems.org'
gem 'cocoapods', '1.14.3'
La versión 1.14.3 de CocoaPods es una de las más estables actualmente y es totalmente compatible con React Native 0.79.7. Otras versiones como 1.15.0, 1.15.1 o incluso 1.16.x han presentado incompatibilidades.
Paso 4: Instalar Bundler y las dependencias del proyecto
Luego, desde la carpeta ios, se pueden instalar las gems del entorno local con:
gem install bundler
bundle install
Este paso es fundamental, ya que asegura que CocoaPods se instale de forma local dentro del proyecto, y no como una dependencia global que podría cambiar en otros entornos.
Verificación:
bundle exec pod --version
# Debe mostrar: 1.14.3
Paso 5: Instalar dependencias con CocoaPods
Una vez que el entorno está listo, se puede ejecutar:
bundle exec pod install --repo-update
Este comando ejecutará CocoaPods utilizando la versión definida en el Gemfile, sin necesidad de forzar arquitectura o ejecutar arch -x86_64.
Paso 6: Ejecutar la aplicación en iOS
Finalmente, desde la raíz del proyecto, se puede correr:
yarn ios
El entorno debería compilar y ejecutar correctamente en el simulador de iOS, sin errores relacionados con CocoaPods, Ruby o Bundler.
Buenas prácticas a tener en cuenta
| Componente | Recomendación |
|---|---|
| Ruby | Usar rbenv, no RVM ni Ruby del sistema |
| Versión de Ruby | Fijar con rbenv global 3.1.2 |
| CocoaPods | Instalar con Bundler dentro del proyecto |
| Gemfile | Usar siempre, con versión fija de cocoapods |
| Arquitectura | No es necesario forzar x86_64 si el entorno está bien configurado |
| Instalación de pods | Ejecutar bundle exec pod install --repo-update |
| React Native | Confirmado compatible con 0.79.7 |
Sugerencia: Automatizar comandos comunes
Se puede simplificar el proceso mediante un Makefile en la raíz del proyecto:
ios-setup:
cd ios && bundle exec pod install --repo-update && cd ..
ios-run:
yarn ios
Luego se ejecutan así:
make ios-setup
make ios-run
Conclusión
Ahora sabes que contar con un entorno Ruby controlado y reproducible es esencial para trabajar con React Native, así puedes evitar errores que no siempre tienen una causa evidente. Esta configuración es la que actualmente me ha funcionado con React Native 0.79.7, sin necesidad de hacks ni ajustes arquitectónicos adicionales.
Happy coding :)
Photo by Hush Naidoo Jade Photography on Unsplash
Written with StackEdit.