[!Note] Configurar la foto del usuario en el sistema.
1. Inicio y configuración del servidor
Para ejecutar el servidor y definir el entorno de trabajo se usa:
bin/dev -b 0.0.0.0El parámetro -b permite que el servidor escuche en todas las interfaces de red.
Rails usa diferentes modos de ejecución (development, test, production) y en modo desarrollo activa herramientas de depuración y recarga automática.
2. Generación de autenticación
El comando:
bin/rails generate authenticationcrea un sistema de autenticación completo, generando automáticamente tablas de usuarios y sesiones dentro de db/migrate.

Esto permite gestionar el inicio y cierre de sesión, controlando qué partes de la aplicación son accesibles.
Hay dos formas de ver la autenticación:
- Negativa: Todo lo que no está explícitamente permitido está prohibido.
- Positiva: Se autentica al usuario y se definen los métodos que puede usar.
Por ejemplo, limitar la creación de productos a usuarios autenticados:
<%= link_to "New product", new_product_path if authenticated? %>Cuando no hay sesión activa, el sistema bloquea el acceso y redirige al login.

3. Control de acceso y vistas dinámicas
Rails permite mostrar u ocultar elementos según la sesión.
En index.html.erb se controlan los accesos visibles:
<h1><%= t ".title" %></h1><%= link_to "New product", new_product_path if authenticated? %><%= link_to "Login", new_session_path unless authenticated? %>Y el archivo principal application.html.erb maneja la navegación y el cierre de sesión:
<nav> <%= link_to "Home", root_path %> <%= button_to "Log out", session_path, method: :delete if authenticated? %></nav>Rails aplica el principio de convención sobre configuración, organizando automáticamente estilos, scripts y vistas dentro de carpetas estándar como app/assets/stylesheets.

4. Pruebas y Cobertura
Los tests garantizan que el sistema funcione correctamente tras cada cambio. Rails genera pruebas unitarias para cada controlador y modelo.
Tipos de prueba:
- Positivas: verifican que las funciones válidas operen correctamente.
- Negativas: prueban que el sistema falle ante entradas inválidas.
La cobertura (coverage) mide qué porcentaje del código está probado. Un buen sistema tiene entre 90% y 95% de cobertura.
Cuando un test falla o “explota”, se puede rastrear el error en la terminal o en:
log/development.logCada corrección debe acompañarse de un nuevo test, mejorando la calidad del software y reduciendo errores futuros.
5. Buenas prácticas y filosofía del código
El enfoque de “Pragmatic Programming” resalta la importancia de mantener un código limpio, probado y legible. Revisar proyectos emblemáticos como Doom o Unreal Engine permite comprender cómo la estructura y disciplina del código garantizan su permanencia en el tiempo.
“El trabajo manual da la sensación de que se hace; el trabajo automatizado da la sensación de que no se hace.” — The Pragmatic Programmer
Reflexión final
En este apunte comprendimos cómo Rails integra autenticación, control de sesiones y pruebas automáticas en un flujo coherente. Desde el manejo de usuarios hasta la cobertura de código, todo contribuye a desarrollar aplicaciones seguras, organizadas y sostenibles a largo plazo.
Glosario
| Término | Definición |
|---|---|
| Autenticación | Proceso que verifica la identidad del usuario. |
| Sesión | Espacio temporal donde se guarda información del usuario autenticado. |
| Coverage | Porcentaje del código cubierto por pruebas automáticas. |
| Scaffold | Generador que crea CRUDs completos (modelo, vista y controlador). |
| Convención sobre configuración | Filosofía de Rails que estandariza estructuras y nombres. |
| Pragmatic Programming | Enfoque que promueve código claro, probado y mantenible. |
| Authenticated? | Método que verifica si el usuario tiene sesión activa. |