Módulo devel para el desarrollo de Drupal

El módulo Devel es un imprescindible para desarrollar con Drupal, proporciona un amplio abanico de herramientas que facilitan la labor de programación y también utilidades de administración, como generar contenido aleatorio o reinstalar módulos.

Devel, la navaja suiza del desarrollo con Drupal. Foto: askdavetaylor

Utilidades de administración

Devel provee utilidades de administración a tres niveles: A través de su configuración, mediante un bloque auxiliar, o mediante modulos extra, como el de generación de contenido.

Generación de contenido

En el mismo package que el módulo Devel, encontraremos el Devel generate, que nos permite generar contenido de ejemplo en nuestro sitio, además de usuarios, taxonomías... Y permite que otros módulos puedan generar su contenido, como por ejemplo Voting API para generar votos. Imprescinidible para probar sitios con contenido de prueba.

Log de consultas / rendimiento

Algunas de las opciones de configuración de Devel incluyen visualización del log de consultas, pudiendo filtrar por las que más consuman, pero además se puede incluir el tiempo de generación de la página y la memoria consumida, entre otras cosas.

Reconstrucción del registro de plantilla

Otra opción situada en la configuración que es muy interesante es la de reconstruir el registro de plantilla en cada carga de página, esta opción solamente deberemos tenerla habilitada mientras desarrollamos, porque ralentiza muchísimo las cargas de páginas, pero nos ahorra tener que limpiar la caché en cada cambio que hagamos sobre la plantilla o estructura.

Bloque de desarrollo

Devel provee un bloque de desarrollo con herramientas que acortarán el tiempo y dificultad de acciones habituales. Se activa de la forma habitual, a través de Estructura » Bloques y se sitúa mientras estemos desarrollando en la región que necesitemos.

Este bloque nos permite, entre otras operaciones:

  • Limpiar caché: Podemos limpiar la caché con un click, aunque hay otros métodos, como drush que normalmente resultan más adecuados.
  • Ejecutar código PHP arbitrario: En la url devel/php encontraremos un textarea donde podemos poner código PHP para probar directamente sobre la web.
  • Información de campos (Drupal 7): Nos muestra todos los campos e instancias de los campos disponibles en el sistema, junto a hook_elements(), elementos de menu, visor de sesiones... son herramientas de información que Devel pone a nuestra disposición en el bloque de desarrollo.
  • PHPInfo: Muestra el resultado de un phpinfo().
  • Reconstruir menús: Extremadamente útil para reconstruir todos los menús del sitio, ya que a veces no es suficiente con limpiar la caché de menús.
  • Reinstalar módulos: Esta es una de las que más he utilizado ultimamente, muestra un listado de los módulos instalados en nuestro sitio y permite ejecutar las acciones de uninstall/install para reinstalar un módulo sin que tengamos que deshabilitarlo, borrarlo o tocar en base de datos.

Herramientas de desarrollo

Son funciones que provee el módulo Devel y que podemos utilizar para debugar nuestro código, imprimiendo variables, objetos, consultas, etc.

  • dpm/dsm: Funciones que permiten imprimir variables, por defecto Devel viene con Krumo activado, pero se puede configurar para desactivarlo o cambiar opciones.
  • dpr: Es un acortador para dprint_r, hace algo parecido a las anteriores, pero sin krumo.
  • dd: En lugar de imprimir variables en pantalla, hace un print_r en un fichero de log llamado drupal-debug.txt del directorio tmp de la instalación. Muy útil por ejemplo para rastrear el código llamado desde javascript, un ejemplo de uso.
  • dpq (Drupal 7): A partir de Drupal 7, la capa de abstracción de base de datos es PDO (DBTNG) y averiguar la consulta que se realiza realmente en base de datos es muy complicado, dpq nos facilita saber qué consulta se esconde detras de un objeto $query.

En este enlace, encontrareis toda la referencia de funciones que provee Devel a la hora de desarrollar.

Otros módulos de desarrollo

  • Theme developer - Estaba incluido en Devel, pero ha adquirido identidad propia desde hace algún tiempo, provee una capa que muestra qué funciones han podido generar el output seleccionado. Muy útil para saber qué funciones tde theme o preprocess podemos utilizar para dar formato a determinados elementos de nuestras páginas. 
  • Coder - Coder evalúa nuestro código y nos dice qué partes no cumplen con los coding standards de Drupal, muy recomendable para mantener la coherencia de código. También nos ayuda a actualizar módulos de drupal 5 a drupal 6.
  • Grammar parser - Si queremos usar la utilidad de coder para ayudarnos a migrar módulos de drupal 6 a drupal 7, necesitamos esta utilidad.
  • Macro - También estaba en Devel, ahora como módulo independiente, nos permite grabar acciones en nuestros sitios que luego podemos exportar y reproducir en otros.

Y vosotros, ¿utilizáis el módulo Devel para desarrollar? ¿alguna utilidad que veais interesante y me haya dejado en el camino?

Comentarios

El módulo de firebug for drupal esta muy bien también y te ahorra usar los dpm.
El módulo de creacción de formularios (lo se hay que ser vago), pero te ahorra tiempo también.
El resto son herramientas en firefox.

:)

Hola Pedro.

Muy interesante el Post. Aunque llevo usando Devel desde hace mucho, había algunas funciones que no conocía, especialmente las funciones de desarrollo.

Yo uso siempre Devel junto con DrupalForFirebug (Para los usuarios de Chrome también está DrupalForChrome).

Para los desarrollos con AJAX añado además la extensión FirePHP. No es propiamente una extensión de Drupal sino de PHP y Firebug. Es parecido a tener DrupalForFirebug y Krumo en una misma herramienta. Muestra los objetos por la consola normal de Firebug por lo que se pueden ver entre distintas peticiones al servidor (útil para AJAX y cuando hay redirecciones de Drupal).

Un saludo :)

<p>Nunca he llegado a usar&nbsp;<a href="http://drupal.org/project/drupalforfirebug">Drupal for Firebug</a>, lo intenté cuando lo sacaron pero no funcionaba bien, le daré otro intento, gracias a los dos! :)</p><p>Oskar, creo que te refieres al <a href="http://drupal.org/project/form_builder">Form Builder</a> verdad?</p><p>Rodrigo, no conocía <a href="https://chrome.google.com/extensions/detail/imlijcpfmhmifofiihbofoamohkd... For Chrome</a>, le echaré un vistazo.</p>

muy bueno el post, me sirvio mucho este modulo.. :)

una vez más, gracias Pedro!

Añadir nuevo comentario