/ / Delegación de implementación en rutas de Sinatra - ruby, sinatra, implementación, rutas

Implementación de delegados en rutas de Sinatra - ruby, sinatra, implementación, rutas

He estado buscando buenas prácticas para Rusy Sinatra y encontré esta pregunta aquí en stackoverflow:

Usando Sinatra para proyectos más grandes a través de múltiples archivos

Sin embargo, me pregunto qué hacer en caso de que elLa lógica de negocios detrás de alguna ruta es grande. ¿No sería mejor envolverlo en una clase (ayudante / utilidad) y simplemente delegarlo en la ruta? En mi opinión, esto mantendrá el controlador limpio y fácil de seguir. ¿Cuál sería la mejor carpeta para colocar tal clase de utilidad?

Respuestas

1 para la respuesta № 1

El patrón que utilizamos donde trabajo es:

Sinatra Web Handler -> clase "Processor"(Encapsula la lógica empresarial en una ruta reutilizable, a veces detrás de fachadas). El procesador realiza cualquier operación ORM o caché que pueda ser necesaria, y sabe cuándo delegar a otros procesadores posteriores (o, incluso, a otros servicios internos / externos).

Esto desacopla las rutas sinatra dellógica de aplicación, y significa que podemos conectar esas clases de procesadores. Intentamos mantener las clases de procesadores relacionadas con un proceso de negocios, por ejemplo. Creación de usuarios, y escríbalos de tal manera que podamos conectarlos a otros puntos finales cuando lo deseemos. Estamos en efecto utilizando Sinatra como un enrutador de solicitud HTTP en nuestra aplicación principal.

Parece funcionar bastante bien.