skip to content

Search

2 min read

Autotest con advertencias en Growl

Cómo enganchar Autotest de Ruby con las notificaciones de Growl en Mac OS X, editando el fichero .autotest del directorio home.

He buscado en la red un método para “enganchar” la utilidad de testeo Autotest en Ruby y el sistema de mensajes de sistema Growl en Mac OS X y la verdad es que no me fue muy bien. Una vez modificado el archivo .autotest en mi $home ya funciona a la perfección. Relato a continuación como obtener esta maravilla. Basta instalar Growl en Mac OS tal que así:

wget http://growl.info/files/Growl-1.1.2.dmg
open Growl-1.1.2.dmg
cd /Volumes/Growl 1.1.2/Extras/growlnotify
less install.sh
sudo ./install.sh
cd
hdiutil detach /Volumes/Growl 1.1.2

y luego descargarte un par de imágenes para hacer los mensajes un poco más bonitos

cd ~
wget http://blog.internautdesign.com/files/rails_fail.png
wget http://blog.internautdesign.com/files/rails_ok.png
mkdir -p Pictures/Rails_Growl/
mv rails_fail.png Pictures/Rails_Growl/rails_fail.png
mv rails_ok.png Pictures/Rails_Growl/rails_ok.png

luego se edita el fichero .autotest que he modificado un poquillo

require 'autotest/redgreen'
require 'autotest/html_report'
require 'autotest/menu'
module Autotest::Growl
 
def self.growl msg, options={}
  salida = "growlnotify -n autotest --image "#{options[:img]}"
    -p #{options[:pri]} -d #{rand(100)} -m "#{msg}" "Tests" #{options[:sticky]}"
  system salida
end
 
Autotest.add_hook :ran_command do |at|
  results = [at.results].flatten.join("n")
  output  = results.slice(/(d+)s+assertions?,s*(d+)s+failures?,s*(d+)s+errors?/)
 
  failures = $~[3].to_i + $~[2].to_i
 
  options = (failures > 0) ? {
    :img=>"/Users/#{ENV["USER"]}/Pictures/Rails/fail.png",
    :pri => 0, :sticky => ""
  } : {
    :img => "/Users/#{ENV["USER"]}/Pictures/Rails/ok.png",
    :pri => 0,:sticky => ""
  }
 
  output = output
    .gsub(/assertions/, "aserciones")
    .gsub(/failures/, "fallos")
    .gsub(/errors/, "errores")
 
    if output
      growl "#{output}", options
    end
  end
end

y listo ya podemos correr test en apps ruby y que se nos notifique en growl

Autotest con Growl
  • Cómo montar pruebas de carga sobre una aplicación Rails antes de ponerla en producción, sin depender de generar el tráfico a mano.

  • Cómo integrar el indexador Sphinx en una aplicación Rails para buscar sobre millones de registros sin depender del buscador de MySQL.

  • Unos benchmarks de Ruby 1.9 recién publicado, midiendo cuánto se acerca su rendimiento al de otros lenguajes.

All posts