en Vivo

Ejemplos reales e interactivos

Ruby on Rails en vivo

El framework que convirtió a un lenguaje “feliz” en la forma más rápida de pasar de una idea a una aplicación web real. Esta página está hecha con Rails y todo lo que ves abajo corre de verdad en el servidor.

Escanéalo con tu celular
y participa en el tablero en vivo

01

¿Qué es Ruby on Rails?

Un framework web full-stack escrito en Ruby. Trae todo lo necesario para hacer una aplicación: base de datos, servidor, vistas, correo, tareas en segundo plano, tiempo real y hasta el deploy.

Lo creó David Heinemeier Hansson (DHH) en 2004 al extraerlo del código de Basecamp, una herramienta de gestión de proyectos. Su idea: si ya resolví lo mismo diez veces, que el framework lo resuelva por mí.

🧭Convención sobre configuraciónSi sigues los nombres, Rails adivina el resto.
♻️DRYDon’t Repeat Yourself: cada cosa se escribe una vez.
😊Felicidad del programadorCódigo que se lee casi como español.
  1. 1995 Yukihiro “Matz” Matsumoto publica Ruby en Japón.
  2. 2004 DHH libera Rails como código abierto.
  3. 2005 Video “Haz un blog en 15 minutos”: se vuelve viral.
  4. 2006 Shopify y Twitter arrancan sobre Rails.
  5. 2008 GitHub nace como una app Rails (y sigue siéndolo).
  6. 2021 Rails 7 trae Hotwire: interfaces modernas sin un framework de JS.
  7. 2024 Rails 8: “de cero a producción” sin servicios externos.

¿Quién lo usa en producción?

Github
Shopify
Airbnb
Basecamp
Zendesk
Coinbase
Gusto
Instacart
Dribbble
Kickstarter
Soundcloud
1password

Shopify procesa millones de tiendas con un monolito Rails; GitHub sigue siendo una de las apps Rails más grandes del mundo.

02

Ruby: el lenguaje detrás

Da clic en una expresión: la ejecuta Ruby en el servidor ahora mismo

En Ruby todo es un objeto, hasta los números. Por eso puedes escribir 3.times o 2.weeks.from_now. Rails agrega cientos de estos atajos con Active Support.

JavaScript
const hoy = new Date();
hoy.setDate(hoy.getDate() - 3);
Ruby on Rails
3.days.ago
Cargando Ruby…
03

Convención sobre configuración

Escribe el nombre de un modelo y mira todo lo que Rails deduce

En otros frameworks configuras a mano qué tabla usa cada clase, qué archivo carga cada ruta, cómo se llama cada vista. En Rails el nombre lo decide todo. Escribe un modelo en inglés (singular):

Preguntándole a Rails…
04

MVC: el viaje de una petición

Lanza una petición real y mira cada paso con sus tiempos

NavegadorGET /ideas Routerconfig/routes.rb ControladorIdeasController ModeloIdea BDSQLite Vistaindex.html.erb 12345
  1. Router traduce la URL a controlador#acción.
  2. Controlador recibe la petición y decide qué hacer.
  3. Modelo (Active Record) habla con la base de datos.
  4. Vista arma el HTML con los datos.
  5. El navegador recibe la respuesta.
Preparando el laboratorio…
05

Active Record: SQL que se lee como español

Arma una consulta y mira el SQL que Rails genera

Cada tabla es una clase y cada fila es un objeto. No escribes SQL: encadenas métodos y Rails lo traduce, lo escapa contra inyecciones y lo ejecuta solo cuando lo necesitas.

class Idea < ApplicationRecord
  validates :titulo, presence: true, length: { in: 3..80 }
  scope :populares, -> { order(votos: :desc) }
  scope :con_votos, -> { where("votos > 0") }
end

Este es el modelo real de esta página. Con esas 5 líneas ya tenemos validaciones, consultas con nombre y una tabla completa.

Consultando…
06

Rutas REST: una línea, ocho rutas

Esta tabla se lee en vivo del enrutador de esta app

Rails.application.routes.draw do
  resources :ideas do
    patch :votar, on: :member
  end
end

Con resources Rails crea las 7 acciones clásicas de un CRUD (crear, leer, actualizar, borrar) siguiendo REST, más los helpers como ideas_path para no escribir URLs a mano.

VerboRutaAcciónHelperQué hace
PATCH /ideas/:id/votar ideas#votar votar_idea_path Ruta extra que agregamos
GET /ideas ideas#index ideas_path Lista todas
POST /ideas ideas#create ideas_path Guarda una nueva
GET /ideas/new ideas#new new_idea_path Formulario para crear
GET /ideas/:id/edit ideas#edit edit_idea_path Formulario para editar
GET /ideas/:id ideas#show idea_path Muestra una
PATCH /ideas/:id ideas#update idea_path Actualiza una
PUT /ideas/:id ideas#update idea_path Actualiza una
DELETE /ideas/:id ideas#destroy idea_path Elimina una
07

Hotwire: tiempo real sin escribir JavaScript

Abre esta página en tu celular, agrega una idea o vota: aparece en todas las pantallas al instante

Prueba enviar algo de 1 o 2 letras para ver las validaciones.
after_create_commit -> {
  broadcast_prepend_to "ideas"
}

Esa línea en el modelo es todo el “tiempo real”. Rails manda el HTML nuevo por WebSocket (Action Cable) y Turbo lo inserta en la página. Cero JavaScript escrito a mano.

Tablero en vivo · ¿Qué te gusta de Rails?

Convención sobre configuración me ahorra horas

DHH · hace 40 minutos

Scaffold: un CRUD completo en un comando

Equipo · hace 40 minutos

Active Record hace que SQL se lea como español

Equipo · hace 40 minutos

Hotwire: interfaces en tiempo real sin escribir JS

Equipo · hace 40 minutos

lo moderno que es

Anónimo · hace 18 minutos

Rails 8 trae su propio deploy con Kamal

Equipo · hace 40 minutos

08

Solid: la base de datos hace de Redis

Encola un trabajo y mira las tablas reales de esta página cambiar en vivo

Antes, para tener trabajos en segundo plano, caché y tiempo real necesitabas montar Redis (otro servidor más) con Sidekiq. Rails 8 trae Solid Queue, Solid Cache y Solid Cable: lo mismo, pero en tablas normales de la base de datos.

AntesApp + Base de datos + Redis + Sidekiq
Rails 8App + Base de datos

La cola no desaparece: es una tabla. Un worker revisa solid_queue_ready_executions cada segundo, toma el trabajo, lo ejecuta y llena finished_at. Mientras tanto, la página responde al instante.

class ResumenTableroJob < ApplicationJob
  def perform(solicitado_por)
    sleep 4
    Rails.cache.write("ultimo_resumen", ...)
  end
end

ResumenTableroJob.perform_later("Hamlet")
Abriendo la base de datos…
09

Rails 8 y el deploy de esta página

Lo nuevo y cómo llegó esta página a internet

🚀

Kamal 2

Despliega con Docker a cualquier servidor con un solo comando: kamal deploy. Esta página usó la misma idea: Docker en un VPS, sin plataformas de pago.

🗄️

Solid Queue · Cache · Cable

Colas, caché y WebSockets guardados en la base de datos. Adiós a Redis. Lo viste funcionando en la sección 8.

🔐

Autenticación incluida

bin/rails generate authentication crea login, sesiones y recuperación de contraseña.

⚡

Propshaft + Import maps

Sin Webpack ni node_modules: el navegador carga los módulos directamente.

🛡️

rate_limit

Límite de peticiones en una línea. Esta página lo usa: máximo 5 ideas por minuto por persona.

🧱

SQLite en producción

Rails 8 lo hace viable para apps reales. Esta página corre con SQLite.

¿Cómo llegó esta página a internet?

  1. CódigoRails 8 en GitHub
  2. DockerImagen con Ruby 3.3
  3. VPS IONOSUbuntu 24.04
  4. TraefikPublica con HTTPS
  5. HTTPSLet’s Encrypt

✅ Cuándo brilla

  • Startups y MVPs: de idea a producto en días.
  • Equipos chicos que quieren hacer todo (full-stack).
  • Apps con mucha lógica de negocio y datos (CRUD, paneles, e‑commerce).

⚠️ Ojo con

  • Curva para aprender “la magia” de las convenciones.
  • Menos ofertas de trabajo que JavaScript o Python en México.
  • No es la mejor opción para cálculos muy pesados en tiempo real.