certmundo.
es‑mx

6 min de lectura

¿Cómo subir tu aplicación Rails a internet?

Subir tu aplicación Rails a internet significa publicarla en un servidor en la nube para que cualquier persona pueda usarla desde su navegador.

¿Sabías que la mayoría de las apps nunca llegan a internet? No porque sean malas, sino porque el paso del deploy asusta. Hoy vas a perder ese miedo.

De tu computadora al mundo

Cuando desarrollas en tu máquina, solo tú puedes ver la app. Para que otros la usen, necesitas un servidor. Un servidor es una computadora encendida las 24 horas que responde peticiones.

Antes, rentar un servidor costaba mucho dinero. Hoy existen plataformas que te permiten publicar gratis o por muy poco. Las más usadas para Rails son Render y Fly.io. Ambas funcionan bien con aplicaciones pequeñas y medianas.

En este lección usaremos Render porque tiene interfaz visual, soporte para Rails y una capa gratuita generosa.

La historia de Carlos

Carlos es desarrollador junior en Monterrey. Lleva tres semanas construyendo una app de inventario para la tienda de su tío. La app funciona perfecto en su laptop. Pero su tío quiere acceder desde el iPad en la caja registradora.

Carlos pensó que el deploy era complicadísimo. Le tomó dos horas la primera vez. La segunda vez, menos de veinte minutos.

Lo que aprendió Carlos es exactamente lo que vas a aprender tú aquí.

¿Qué necesitas antes de hacer deploy?

Antes de subir tu app, revisa esta lista:

  • Tu app corre sin errores en local con rails server
  • Tienes una cuenta en GitHub con tu código subido
  • Tienes una cuenta gratuita en render.com
  • Tu app usa PostgreSQL como base de datos

Ese último punto es importante. En desarrollo muchos usan SQLite, pero los servidores en la nube usan PostgreSQL. Si tu app usa SQLite, necesitas cambiarla antes del deploy.

Cambia SQLite por PostgreSQL

Abre tu Gemfile y busca esta línea:

gem "sqlite3"

Cámbiala por:

gem "pg"

Luego abre config/database.yml y reemplaza su contenido con algo así:

default: &default
  adapter: postgresql
  encoding: unicode
  pool: 5

development:
  <<: *default
  database: miapp_development

test:
  <<: *default
  database: miapp_test

production:
  <<: *default
  url: <%= ENV["DATABASE_URL"] %>

Esa última línea es clave. En producción, Render va a inyectar automáticamente la URL de la base de datos. Tú no tienes que escribir contraseñas en el código.

Corre bundle install después de editar el Gemfile.

Configura tu app para producción

Rails tiene un modo especial llamado producción. Es más rápido, más seguro y no muestra errores detallados al usuario.

Necesitas una variable de entorno llamada SECRET_KEY_BASE. Render la genera automáticamente. Pero debes decirle a tu app que la use. Revisa que en config/environments/production.rb exista esta línea:

config.require_master_key = true

Si no existe, agrégala. Esto le dice a Rails que necesita una llave secreta para funcionar en producción.

También debes agregar la gema bootsnap si no la tienes, y asegurarte de tener esto en tu Gemfile:

gem "bootsnap", require: false

Por último, para que los assets (CSS, imágenes, JavaScript) funcionen en producción, corre esto antes de hacer push:

rails assets:precompile RAILS_ENV=production

Esto genera archivos optimizados para el servidor.

Sube tu código a GitHub

Render se conecta directo a tu repositorio de GitHub. Cada vez que haces push, puede desplegar automáticamente.

Si aún no tienes tu app en GitHub:

git init
git add .
git commit -m "App lista para deploy"
git branch -M main
git remote add origin https://github.com/tuusuario/miapp.git
git push -u origin main

Asegúrate de tener un archivo .gitignore que ignore /config/master.key y /config/credentials.yml.enc. Esas llaves son privadas y no deben subir al repositorio público.

Crea tu servicio en Render

Ahora viene la parte visual. Entra a render.com y haz esto:

  1. Clic en NewWeb Service
  2. Conecta tu cuenta de GitHub
  3. Selecciona el repositorio de tu app
  4. Render detecta Rails automáticamente
  5. En Build Command escribe: bundle install && rails db:migrate assets:precompile
  6. En Start Command escribe: bundle exec puma -C config/puma.rb
  7. Elige el plan gratuito
  8. Clic en Create Web Service

Render empieza a construir tu app. Puedes ver los logs en tiempo real. Es como ver una cocina desde el restaurante.

Crea la base de datos en Render

Una cosa más: necesitas una base de datos PostgreSQL en la nube. En Render:

  1. Clic en NewPostgreSQL
  2. Dale un nombre (por ejemplo: miapp-db)
  3. Elige el plan gratuito
  4. Copia la Internal Database URL
  5. Ve a tu Web Service → Environment → agrega variable DATABASE_URL con ese valor

Render conecta tu app con la base de datos automáticamente.

La historia de Valeria

Valeria estudia en la UNAM y construyó una app para vender artesanías de Oaxaca. Quería mostrarla en una feria de emprendedores en la Ciudad de México.

El problema: su laptop no podía estar encendida durante la feria. Necesitaba una URL real.

Siguió exactamente estos pasos. A las 11 de la noche antes de la feria, su app estaba en línea. Al día siguiente, tres compradores hicieron pedidos desde sus teléfonos mientras ella hablaba con otros visitantes.

Su app procesó pedidos por más de $8,500 ese fin de semana. Todo gracias a un deploy bien hecho.

Errores comunes al hacer deploy

No todo sale perfecto la primera vez. Aquí están los errores más frecuentes y cómo resolverlos:

Error: Precompile failed Significa que hay un problema en tus archivos de CSS o JavaScript. Corre rails assets:precompile localmente para ver el error exacto antes de hacer push.

Error: PG::ConnectionBad Tu app no puede conectarse a la base de datos. Revisa que la variable DATABASE_URL esté bien configurada en Render.

Error: Missing secret key base Render necesita la variable SECRET_KEY_BASE. Ve a Environment en tu servicio y agrégala. Puedes generar una con rails secret en tu terminal local.

La app carga pero las imágenes no aparecen Esto pasa cuando subes imágenes al servidor local. En producción necesitas un servicio externo como Amazon S3 o Cloudinary para guardar archivos. Es un paso extra, pero vale la pena.

El deploy tarda más de 10 minutos Es normal la primera vez. Render instala todas las gemas desde cero. Las siguientes veces es más rápido porque usa caché.

Deploy automático con cada push

Una vez que todo funciona, activa el Auto-Deploy en Render. Así, cada vez que hagas git push, tu app se actualiza sola. No tienes que entrar a Render manualmente.

Esto es exactamente lo que hacen empresas como Liverpool o Mercado Libre con sus pipelines de integración continua. Claro que ellos tienen sistemas más complejos, pero el principio es el mismo: un push actualiza producción.

Cuánto cuesta mantener tu app en línea

El plan gratuito de Render tiene un límite: la app "duerme" si no recibe tráfico por 15 minutos. La primera vez que alguien la visita después de eso, tarda unos segundos en despertar.

Si quieres que siempre esté activa, el plan básico cuesta alrededor de $175 al mes. Para una app de negocio real, eso es muy accesible. Muchas pequeñas empresas en México pagan eso o menos por tener su app en línea.

Si creces mucho, puedes migrar a DigitalOcean o AWS. Pero para empezar, Render es más que suficiente.

Lo que aprendiste hoy

Hiciste algo que muchos desarrolladores posponen por meses. Llevaste tu app de tu computadora al mundo real. Eso no es poca cosa.

Carlos pudo mostrarle a su tío el inventario desde el iPad. Valeria vendió artesanías desde su teléfono. Tú puedes hacer lo mismo con lo que construiste.

El deploy no es el final del proyecto. Es el comienzo de la vida real de tu app.

Puntos clave

  • Para hacer deploy de Rails en la nube necesitas cambiar SQLite por PostgreSQL. Usa `gem \"pg\"` en tu Gemfile y configura `database.yml` para leer la URL de conexión desde la variable de entorno `DATABASE_URL`.
  • Render es una plataforma accesible para publicar apps Rails. Conéctala a tu repositorio de GitHub, configura el comando de build (`bundle install && rails db:migrate assets:precompile`) y el de inicio (`bundle exec puma`), y tu app quedará en línea.
  • Nunca subas tu `master.key` a GitHub. Esa llave protege tus credenciales. Agrégala al `.gitignore` y configura las variables de entorno sensibles directamente en el panel de Render.
  • Activa el Auto-Deploy en Render para que cada `git push` actualice tu app automáticamente. Así trabajas como los equipos profesionales: un push, un deploy.
  • Los errores más comunes en el primer deploy son: assets que no compilan, variables de entorno faltantes y problemas de conexión a la base de datos. Corre `rails assets:precompile` en local antes de hacer push para detectar errores antes de tiempo.

Comparte esta lección: