AjGenesis: Generación de código para Ruby on Rails

Gracias al bueno de @lmpetek que escribió un post sobre su experiencia con AjGenesis:

Rails tiene scaffold, nosotros usamos AjGenesis

Es bueno encontrar evidencia publicada de usuarios de mi proyecto open source AjGenesis de generación de código DESDE UN MODELO. Me llega evidencia de que lo usan (correos electrónicos, comentarios en mis charlas, etc…), pero encuentro poca evidencia publicada, y es bueno encontrarla. Interesante que @lmpetek y sus equipos usen AjGenesis (incluso llegó a usarlo fuera de Windows, gracias a que funciona con Mono en otros sistemas operativos). Sé que sus equipos hasta lo usaron para generar reportes de MS SQL Server Reporting Services ;-)

También recuerdo que de una aplicación que estaban construyendo en Java, al tener un modelo independiente de la tecnología, se pudo pasar a dar una demo en .NET con poco esfuerzo. Y que si quieren modificar la forma de acceder a los datos (por ejemplo, de JDBC a Hibernate) tranquilamente pueden modificar los templates para conseguir ese efecto. Teniendo la lógica en archivos generables una sola vez, cuando cambian el modelo y regeneran, esa lógica no se pierde. Y cuando trabajaron en .NET, pudieron pasar de usar un framework para las operaciones sobre objetos (persistencia) a otra forma, usando ADO.NET, SIN CAMBIAR LO QUE YA HABIAN escrito de la solución. Algo comenté sobre esta experiencia en:

Generación de código con AjGenesis en un proyecto real

Incluso un proyecto, que ya habían iniciado sin generación de código, sirvió de base para abstraer el modelo y la forma de codificación (proyectos, patrones, clases, reparto de las responsabilidades) y conseguir generación de código. Escribí sobre eso en:

AjGenetizando una aplicación

Y ahora comienzan a usarlo para Ruby on Rails. Notable! Leo en el post:

Luego de utilizarlo en proyectos reales para generar soluciones en .Net y Java, fue absolutamente natural utilizarlo para generar proyectos Ruby on Rails.
A la generación de código la considero un aliado indiscutido en la programación diaria para cualquier equipo de desarrollo maduro.

Si el proyecto tiene una base de datos ‘Legacy’ utilizamos AjGenesis para extraer la información desde las estructuras de las tablas en la DB y volcar esto en entidades agnósticas con las que luego  generamos los modelos, los controladores y las respectivas vistas.
Recién en este punto avanzamos manualmente, agregando la ‘inteligencia’ al proyecto. Aportando el diferencial real para que una aplicación tenga ese plus que tanto valora nuestro cliente. La diferencia es que esta etapa para nosotros comienza muy tempranamente.
Podemos regenerar toda la apariencia de la aplicación, realizando cambios en los templates en que se basa la generación y tener todo funcionando en poco tiempo.

Noten una cosa: como ya el equipo entiende AjGenesis (de proyectos anteriores en Java y .NET), puede escribir sus propios templates, en lugar de usar la generación que viene con Ruby on Rails. Eso apoya algo que defiendo: hay que hacer sus propios templates, en base a lo que uno sabe. Usar templates de otros puede ser fácil al comienzo, pero al madurar el proyecto y querer modificarlos puede complicarse. La generación de código tiene que producir texto que entendamos. ¿Qué mejor que hacerlo con nuestros propios templates? Basados en nuestra experiencia de codificación “normal”. Es por eso que los templates que vienen con AjGenesis son de “prueba de concepto” y nada más. Cada equipo, empresa, debe cultivar y nutrir a sus artefactos de generación de código, en lugar de simplemente importarlos de otro lado. Es decir, promuevo el crecimiento orgánico (por ejemplo, baby steps, incremental).

Vean que el conocimiento adquirido en los equipos en la separación de las responsabilidades ha ido sobreviviendo (y espero mejorando) de .NET a Java y ahora a Ruby on Rails. Un ejemplo de dunga dunga a la tecnología ;-)

Post relacionado (gracias al bueno de @ferclaverino):

AjGenesis y Generación de Código: viendo la luz

donde explica su experiencia en proyecto real con AjGenesis.

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

This entry was posted in 15035, 16397, 2643, 6145. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>