Thursday, April 1, 2021

Concerns, Interactors y Helpers en Ruby on Rails

 Cuando nos referimos a estos 3 conceptos en Ruby on Rails, podemos decir que son los que vienen a resolver problemas de duplicación/repetición de código (Don'tRepeatYourself) o de mantener a nuestras clases con una única responsabilidad (Single Responsability).

Empecemos por los Helpers.

son métodos que pueden ser usados por los VIEWS, entonces, pedazos de códigos reutilizables entre las views de tu proyecto. Cuando tienes código de vista que implementa cierta lógica y que además otras vistas también van a utilizar, puede ser buen candidato de extraerlo a un helper. Así no repites código en tu vista y además lo mantienes más limpio y legible.

Vamos por los Concerns.

Son módulos que guardan código común reutilizable entre múltiples clases. Para que lleguen a ser concerns, se debe extender de ActiveSupport::Concern y la clase que quiera usar dicho concern debe hacer un Include NombreConcern

Viven dentro de /app/models/concerns y /app/controllers/concerns

Interactors

Los interactors puede ser una forma más de refactorizar el código de nuestros controllers, esos controllers llamados FAT controllers. Se dice que son FAT porque no están cumpliendo el principio de Single Responsability y están haciendo cosas que no deben hacer. Entonces todo ese código por demás lo extraemos y llevamos a un interactor. 

Un interactor para que sea interactor debe hacer un include Interactor, que viene de una gema interactor-rails y también debe tener un método de instancia público llamado call.

El controlador que quiera usar dicho interactor, deberá poner NombreInteractor.call(enviar los parámetros correspondientes)

Sì, demasiado básico. Hay mucho más envuelto en estos 3 conceptos. Solo es una introducción genérica. Consulta la documentación de RoR para más detalles.