Google Web

16 ene. 2009

WebCore & Firebug

Algunos sabran que trabajo "arduamente" en un framework PHP junto con el señor Mario, que incluye mucho nonsense que no contare hoy, para crear hermosas aplicaciones web. Pues bien, ayer mientras veia la lluvias invernales, me preguntaba que tan cute sería Firebug Lite como un agregado a WebCore, y que tanto lo podria utilizar. Asi que deje de pensar y comenze el code.

La WebCore tiene un manager de logs, que basado en la configuración de la webapp incluye niveles de debug distintos y soporte para escribir en log file o database. Asi que parte del camino ya estaba hecha, para tener lo que yo llamo, DebugInClient o debug del server en cliente. Para los flojos como yo, que no pueden abrir un archivo LOG y ver que ha pasado.

El primer paso fue tener Firebug Lite funcionando. Cosa fácil, me baje el Firebug Lite y modifique el inyector de dependencias de WebCore para que incluyera este JS y CSS cuando el nivel de debug fuera correcto. Punto 1, resuelto, si mi webapp tiene el nivel de debug en cliente, Firebug aparece magicamente en cada pagina ya sea que este en IE, Chrome o FF, no importa. El siguiente paso era tener un control de todo lo que se hace en el lado server, para ello modifique el JS del Controller de WebCore. El Controller de WebCore, como todo buen MVC, se encarga de la entrega de todo, asi que aparte de su versión PHP, tenemos una versión en JS que ayuda a enviar y recibir hacia el Controller server. Las modificaciones fueron ligeras, unas cuantas funciones y vamonos.

this.log = function(msg)
{
if (this.isDebugEnabled)
{
firebug.d.console.cmd.log(msg);
}
},

this.error = function(msg)
{
if (this.isDebugEnabled)
{
firebug.d.console.cmd.error(msg);
}
},

this.warn = function(msg)
{
if (this.isDebugEnabled)
{
firebug.d.console.cmd.warn(msg);
}
}

Despues interrumpi el LogManager (que tiene el error y excepción handler default) para que las entradas del log las escribiera en llamadas al Controller, por lo que todo se escribia en el injector, dandonos hermosos warning de PHP directamente en la consola de Firebug.

Se que suena tricky y raro, pero más tarde les pongo un sample para que vean el poder xD.