Grails Include Plugin 0.3, acabando el GSoC
Hace días que no escribo sobre mi proyecto del Google Summer of Code, y eso que ya había puesto disponibles un par de releases del Include Plugin de Grails. Sólo lo he ido anunciando en la lista de correo de Grails para ir recibiendo feedback y mejorarlo.
En este momento, que estamos ya en fase de evaluación y en teoría lo que hagamos los participantes del GSoC ya no vale, es una versión casi definitiva, ya que al menos la forma de usarlo en principio ya no va a cambiar.
En las versiones 0.1 y 0.2 se utilizaban dos tags, por cierto que al taglib hubo que añadirle un namespace(inc) por distribuirlo como un plugin, inc:includeUrl
y inc:includeController
que en esta versión están como deprecated y no se recomienda su uso.
Ahora únicamente es necesario el tag inc:include
, que de inicio era mi idea pero chocaba con otro include fantasma que hay en Grails, por estar en el mismo namespace, y al añadirle el nuevo namespace simplemente se me olvidó :P.
En la lista me propusieron que hiciera esa modificación, lo que significaba sacar la versión 0.3. Mientras que al anunciar en la lista la última versión, ya que me han críticado el código para que mejore el rendimiento y haberme dado gran parte de la solución, tocará sacar al menos una nueva versión con esas mejoras. Las grandezas del open source, si alguien más se anima, las críticas son bienvenidas ;).
Hablando ya de la instalación y su uso, es sencillísimo:
Como está en el repositorio oficial de plugins, para instalarlo sólo debemos ejecutar:
grails install-plugin include
.
Para hacer includes de otras acciones podemos llamar a una accion de un controlador con unos parámetros, por ejemplo insertar las últimas 5 noticias en una vista:
<inc:include controller="news" action="last" params="[number:5]"/>
Que también podríamos hacer usando la url que devuelve esa acción, con una mayor probabilidad de un cambio en el mapeo de la url:
<inc:include url="/news/last?number=5"/>
Otra de las cosas que pienso es interesante es el poder insertar contenido estático dentro del directorio web-app, de por ejemplo un html, a los que anteriormente no había una forma directa de acceder:
<inc:include url="/test.html"/>
En definitiva, es un plugin que facilita parte del trabajo en webs tipo portal, evita la necesidad de crear taglibs para simplemente mostrar datos o de repetir código en los controllers. En fin, espero aprobar la evaluación y así llevarme la camiseta!! ;)