Old Emmanuel Oga's Weblog (new one is at www.emmanueloga.com)

Windoze, command prompts, colores … y algo de autotest

Posted in Uncategorized by emmanueloga on agosto 15, 2007

RESUMEN: Colores en autotest bajo windows.

1) Si todavia no tienen el gem, ejecutar gem install win32console

2) Crear un archivo .autotest en el root de su aplicacion y pegar al principio del archivo lo siguiente:

begin
require ‘Win32/Console/ANSI’ if PLATFORM =~ /win32/
rescue LoadError
raise ‘You must gem install win32console to use color on Windows’
end

3) Agregar luego lo siguiente:

require ‘autotest/redgreen’

Listo! colores en la salida de autotest!

Log de rails “en colores”: Usen la consola de cygwin y corran tail -f development.log desde el directorio log de su app rails.


…hace mucho tiempo que buscaba una solucion para colorizar mi command prompt en windows.

Aquellos programas o scripts que imprimen a pantalla caracteres de control ansi para colorizar su salida llenan la pantalla de basura si el interprete de comandos no soporta dichos caracteres. Mas aun, la informacion util que brinda el color se pierde.

Recientemente el tema me volvio a interesar ya que empece a utilizar autotest como complemento a bdd en rails

“gem install zentest”

autotest es un componente de Zentest, y ZenTest es un paquete de herramientas para testing.

El gem (la gem?) instala varios comandos en ruby/bin:

  • El comando zentest en si es una especie de scaffolding para crear tests.
  • autotest simplemente corre los tests sobre los archivos pertinentes cada vez que detecta un archivo modificado. Se puede configurar que archivos debe correr en el archivo de configuracion .autotest
  • unit_diff otros…

Ademas de no tener que ejecutar “rake tests” o “ruby test/dir/file.rb …” constantemente, usar ZenTest para corre los tests tiene otras ventajas. Por ejemplo, ZenTest limpia la salida de los tests mediante un script llamado unit_diff (que require un diff.exe que funcione como el diff de linux… para eso pueden instalar cygwin o buscar algun diff para winxp en google).

Para usar autotest hay que crear un archivo .autotest en tu carpeta de archivos personales. Personalmente, prefiero dejar ese archivo en el root de mi aplicacion rails donde lo tengo bien accesible –nada de “c:\documents and settings\blablablabl… blablabal!.

Ah! un modelo del contenido para ese archivo se encuentra en el directorio de ZenTest. En mi caso:

C:\ruby\lib\ruby\gems\1.8\gems\ZenTest-3.6.1\example_dot_autotest.rb

Puede simplemente copiar ese archivo como “.autotest” al root de la carpeta de rails y configurarlo “a-su-gusti”. En mi caso, y el motivo de este post🙂, quise activar el plugin de autotest “redgreen”, que colorea la salida en verde cuando esta todo ok y en rojo cuando esta todo mal🙂.

Obviamente, si trabajan con algun flavor de linux esto funciona bien automaticamente en sus consolas. El problema surge en windows, parece que al el interprete de commando de windows XP (cmd) le falta cargar el controlador ansi.sys. Como solucionarlo?

Este link:

Win NT And ansy blah

contiene una explicacion “windowsista (¡?)” que, al fin y al cabo, al menos a mi, no me funciono.

Este otro link:

kpumuk.info blog

sugiere instalar la gem win32console (gem install win32console) y da una explicacion de como utilizar los codigos de escape ansi para habilitar colores en la consola. En el caso de autotest es muy sencillo:

Si todavia no tienen el gem, gem install win32console
Abrir el archivo .autotest y pegar al principio lo siguiente:

begin
require ‘Win32/Console/ANSI’ if PLATFORM =~ /win32/
rescue LoadError
raise ‘You must gem install win32console to use color on Windows’
end

Descomentar la siguiente linea de .autotest:

require ‘autotest/redgreen’

Listo! colores en la salida de autotest!

Otro tip interesante es para la salida del log de rails. Este contiene multitud de caracteres de control. Para poder visualizar correctamente, pueden:

  1. Usar Eclipse, que renderea correctamente los colores
  2. Hacer un script de ruby que imprima el contenido usando win32console
  3. Quizas overkill si no lo tienen instalado, pero pueden usar la consola de cygwin para hacer un tail -f development.log como si estuvieran en linux! En mi caso, ya tenia cygwin instalado, asi que eso es lo que hago (mientras espero que netbeans soporte la colorizacion de caracteres ansi…)

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: