Esta guía detalla el proceso desde la preparación del sistema hasta la gestión avanzada de gemas (librerías) para tus proyectos de Sinatra.
Resumen de Arquitectura: Estamos usando rbenv para el motor de Ruby y Bundler para las librerías.
1. Preparación del Sistema (Ubuntu/Debian)
Instalamos las dependencias necesarias para compilar Ruby desde el código fuente:
sudo apt update && sudo apt install -y build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm6 libgdbm-dev git curl
2. Instalación de rbenv
Configuramos el gestor de versiones para manejar múltiples entornos de Ruby:
# Clonar rbenv y ruby-build
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
# Configurar variables de entorno
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec $SHELL
3. Instalación de Ruby 3.2.3
Instalamos la versión específica y el gestor de gemas:
rbenv install 3.2.3
rbenv global 3.2.3
gem install bundler
Tip de rbenv: Usa
rbenv local 3.2.3 dentro de la carpeta de tu proyecto para crear el archivo .ruby-version.
4. Gestión de Gemas: ¿Global o Vendor?
Existen dos filosofías para manejar las librerías en Ruby:
A. Modo Global (Compartido)
Las gemas se guardan en la carpeta central de rbenv. Es el comportamiento por defecto.
Uso: Ideal para scripts rápidos o ahorrar espacio en disco.
B. Modo Vendor (Aislamiento Estilo venv)
Las gemas se guardan dentro de la carpeta del proyecto. Es lo que usamos en Nutrigesica.
bundle config set --local path 'vendor/bundle'
bundle install
Importante: Al usar este modo, siempre ejecuta tus comandos con
bundle exec (ej: bundle exec ruby app.rb).
Estructura Final del Proyecto
Así es como se ve tu proyecto con el aislamiento activado:
nutrigesica/
├── .bundle/# Configuración local de Bundler
├── .ruby-version# Indica a rbenv que use Ruby 3.2.3
├── Gemfile# Lista de librerías (Sinatra, PG, etc.)
├── app.rb# Tu código principal
└── vendor/
└── bundle/# Aquí viven tus 28MB de librerías aisladas
Recordatorio para el Servidor: En Ubuntu, solo necesitas clonar el código y ejecutar
bundle install. Gracias al archivo .bundle/config, el servidor sabrá automáticamente que debe usar la carpeta vendor.
Comentarios
Publicar un comentario