El otro día leyendo esta entrada que me encantó me entró la curiosidad de buscar alternativas a lo que nos mostraban ahí, entonces buscando un poco encontré con dos posibles alternativas, supongo que habrá muchas más, pero ahora solo me centraré en dos.

Notificaciones usando mumbles:
Mumbles project es un sistema de notificación al más puro estilo growl de Mac OS con ordenación en pila y cosillas de esas, si que es cierto que es un proyecto muy nuevo y está un poco verde, pero merece la pena echarle un vistazo.

Podemos obtener el paquete desde aquí

Usando practicamente el mismo código que el obtenido en el post de referencia creamos un archivo .autotest en nuestra carpeta home, quedando de la siguiente forma:


 module Autotest::Growl
 
   Autotest.add_hook :run do  |at|
     system "mumbles-send 'Autotest Running' Started"
   end
 
   Autotest.add_hook :ran_command do |at|
     results = [at.results].flatten.join("\n")
     output  = results\
     .slice(/(\d+)\s+examples?,\s*(\d+)\s+failures?(,\s*(\d+)\s+pending)?/)
     if output
       if $~[2].to_i > 0
         system "mumbles-send FAIL '#{output}'"
       else
         system "mumbles-send PASS '#{output}'"
       end
     end
   end
 end

Y el resultado seria:
Como principal limitación tenemos el no poder personalizar el color de los mensajes, lo cual resta muchos puntos al sistema, y mas en este caso que nos interesa una notificación rápida por color, sin tener que leer su contenido.

Como ventaja le veo que es un tipo de notificación muy dinámica ya que se apilan unas encima de otras.


Usar Libreria libnotify de gnome

Es la librería de comunicación por notificación montada por defecto en gnome, aún así debemos instalar el siguiente paquete.

apt-get install libnotify-bin

y luego creat el archivo .autotest con el siguiente contenido:

module Autotest::Growl
 
   Autotest.add_hook :run do  |at|
         system "notify-send -i gtk-dialog-warning -t 3000 'Autotest Running' 'Started'"
   end
   Autotest.add_hook :ran_command do |at|
     results = [at.results].flatten.join("\n")
     output  = results\
     .slice(/(\d+)\s+examples?,\s*(\d+)\s+failures?(,\s*(\d+)\s+pending)?/)
     if output
       if $~[2].to_i > 0
         system "notify-send -i gtk-dialog-error -t 3000 'FAIL' '#{output}'"
       else
         system "notify-send -i gtk-dialog-info -t 3000 'PASS' '#{output}'"
       end
     end
   end
 end
 

Como veréis el código no ha cambiado prácticamente en nada,lo bueno es que ahora podemos personalizar un poco los mensajes con iconos quedando así:

Comentar que esto es solo un pequeño ejemplo, podríamos afinar y dar mas funcionalidad a estas notificaciones, ya que por ejemplo no he diferenciado cuando un test falla por no cumplir sus requerimientos o por problemas de sintaxis del propio test.

Espero que os sea de utilidad!