489 words
2 minutes
2.10 Autenticación, Sesiones Y Pruebas En Rails

[!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.0

El 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 authentication

crea 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:

  1. Negativa: Todo lo que no está explícitamente permitido está prohibido.
  2. 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.log

Cada 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érminoDefinición
AutenticaciónProceso que verifica la identidad del usuario.
SesiónEspacio temporal donde se guarda información del usuario autenticado.
CoveragePorcentaje del código cubierto por pruebas automáticas.
ScaffoldGenerador que crea CRUDs completos (modelo, vista y controlador).
Convención sobre configuraciónFilosofía de Rails que estandariza estructuras y nombres.
Pragmatic ProgrammingEnfoque que promueve código claro, probado y mantenible.
Authenticated?Método que verifica si el usuario tiene sesión activa.
2.10 Autenticación, Sesiones Y Pruebas En Rails
https://jangelmm.github.io/posts/informatica/ingenieriasoftware/programacion-web/2-html-xml-y-css/210-autenticación-sesiones-y-pruebas-en-rails/
Author
Jesús Ángel Martínez Mendoza
Published at
2025-10-16
License
CC BY-NC-SA 4.0