- 1

Curso Intermedio de Ruby on Rails: Migración y Optimización Avanzada
01:37 - 2

Migración de Rails a MongoDB con Mongoid y Pruebas Automatizadas
03:38 - 3

Gestión de Múltiples Versiones de MongoDB en Linux
13:21 - 4

Migración de Rails a MongoDB con Mongoid: Configuración Inicial
10:17 - 5

Migración de Modelos de Active Record a Mongoid
08:35 - 6

Migración completa de aplicaciones con MongoDB y Rails
15:55
Procesos en Background con Sucker Punch en Rails
Clase 26 de 34 • Curso Intermedio de Ruby on Rails
Contenido del curso
- 7

Pruebas Automatizadas: Introducción a TDD y BDD en Desarrollo de Software
10:11 - 8
Creación de Fábricas Automatizadas con FactoryBot y Faker en Rails
04:18 - 9

Integración de Librerías para Pruebas Automatizadas en Rails
13:24 - 10

Pruebas de Modelos en Rails con Mongoid y RSpec
13:41 - 11

Pruebas de Validación y Guardado en Modelos Rails
11:39 - 12

Validación y Pruebas de Modelos en Ruby on Rails
07:48 - 13

Pruebas de Integración en Rails: Configuración y Ejecución Básica
10:54 - 14

Creación y prueba de tareas con métodos POST en Rails
12:39 - 15

Automatización de Pruebas con Headless Browser y Capybara en Rails
05:03 - 16

Pruebas de Sistema con KPIBara y WebDriver en Rails
13:35 - 17

Automatización de Pruebas de Sistema con Selenium y JavaScript
15:24
- 22

Envío de Emails Automático al Crear Tareas
04:43 - 23

Introducción a Service Objects en Ruby on Rails
09:00 - 24

Pruebas de TDD para Service Object de Notificaciones por Correo
12:18 - 25

Creación de Service Objects para Envío de Correos en Ruby on Rails
13:04 - 26

Procesos en Background con Sucker Punch en Rails
12:51 - 27

Pruebas con Doubles en Rails usando Sucker Punch
12:10
- 28

Máquinas de Estado Finito: Conceptos y Aplicaciones Prácticas
07:32 - 29

Creación de Máquinas de Estados con AASM en Ruby on Rails
13:37 - 30

Creación de Service Object para Gestión de Estados de Tareas en Rails
08:37 - 31

Acciones de Controlador y Pruebas en Ruby on Rails
10:43 - 32

Integración de AJAX en Gestión de Estados de Tareas en Ruby on Rails
13:07
¿Qué problema aborda el uso de trabajos en segundo plano?
El envío de correos electrónicos puede convertirse en una tarea bloqueante si el servidor de correos tarda en enviar el lote de información necesario. Este comportamiento puede resultar en una espera innecesaria y errores de tiempo de espera, afectando la experiencia del usuario. Por tanto, para evitar que los usuarios experimenten largos tiempos de espera, se debe implementar el concepto de trabajos en segundo plano. Estos permiten que el procesamiento de tareas ocurra de manera concurrente o en paralelo, optimizando así el rendimiento de la aplicación.
¿Qué herramienta utilizar para trabajos en segundo plano en Rails?
Rails ofrece un sistema llamado Active Job, que permite configurar un lenguaje para ejecutar procesos en paralelo. Sin embargo, Active Job no proporciona un backend, por lo que es necesario asociarlo con librerías adicionales, como Sucker Punch, Resque o Delayed Job. En este caso particular, utilizaremos Sucker Punch debido a su simplicidad y mínima dependencia tecnológica, evitando la introducción de complejidades en la infraestructura.
¿Cómo instalar Sucker Punch?
Para habilitar Sucker Punch en un proyecto, se debe seguir estos pasos:
- Abrir el archivo
Gemfile. - Agregar la línea
gem 'sucker_punch'bajo las dependencias actuales. - Ejecutar el comando
bundle installen la consola de comandos para instalar la gema.
¿Cómo crear un trabajo en segundo plano con Sucker Punch?
Al contar con Sucker Punch, puedes crear un job específico para manejar procesos, como el envío de correos electrónicos:
- Usa un generador de Sucker Punch para crear un nuevo job.
- Organiza la estructura del directorio de tu aplicación, creando un archivo específico para el job dentro de la carpeta
app/jobs. - Transfiere la lógica de procesamiento de emails del archivo de servicio al job recién creado.
class SendEmailJob
include SuckerPunch::Job
def perform(task_id)
task = Task.find(task_id)
# Lógica de envío de correo usando el objeto `task`
end
end
¿Cómo ejecutar procesos de manera asíncrona con Sucker Punch?
Una vez definido el job, se pueden usar métodos como perform_async para ejecutar tareas de manera no bloqueante:
Ejecución asíncrona
SendEmailJob.perform_async(task.id.to_s)
Ejecución programada
Si necesitas que un proceso se ejecute después de un determinado tiempo, puedes utilizar el método perform_in:
SendEmailJob.perform_in(5, task.id.to_s)
Con este método, puedes retrasar la ejecución de un job cinco segundos, asegurando que la interfaz de usuario no quede bloqueada durante este tiempo.
Prueba de la implementación en un entorno web
Después de ajustar y configurar los jobs en segundo plano, es necesario detener y reiniciar el servidor de Rails para aplicar los cambios de la gema. Luego, se pueden crear nuevas tareas y verificar que los correos electrónicos se envían de manera correcta sin bloquear el funcionamiento de la aplicación. Así, Sucker Punch se convierte en una solución eficiente para manejar trabajos en segundo plano, optimizando los procesos y mejorando la experiencia del usuario al evitar esperas prolongadas en la ejecución de tareas críticas como el envío de emails.