miércoles, julio 04, 2007

Scripteando con Ruby

Hoy tuve que procesar un archivo de direcciones ip para contabilizar el número de conexiones desde cada dirección. Cosa simple ¿no?

Seguramente en las herramientas de todos los días (shell) lo hubiera conseguido en algunos minutos. Habrá quien lo resuelva en unas cuantas líneas de Perl, tal vez Python o whatever.

Sin embargo tuve la linda ocurrencia de hacerlo con Ruby. ¡¿Ruby?! ¿No solamente es para hacer aplicaciones web y frameworks? Pues no, creo que no.

Por alguna referencia encontré Everyday scripting with Ruby. No he comprado el libro pero el título me motivó para hacer esta prueba. ¿Puede ser Ruby un lenguaje que compita contra Perl? Muchos de los scripts de administración se construyen religiosamente con Perl o en mi caso mayormente con shell. Pero quisé probar Ruby en algo que no fuera el hype de Rails.

Realmente el problema es sencillito. Pero la experiencia es harto interesante. De inicio conseguir ayuda. ri es terriblemente práctico. Respuestas concisas, precisas y macizas. Luego la experiencia iterativa e interactiva. Vas ejecutando, encontrando errores y corrigiendo (al menos a este nivel de experiencia) lo cual es altamente ¿didáctico?. Aparece un error y corres a ri para confirmar si lo que quisiste hacer se puede. Te das cuenta del error, corriges y va de nuez.

Si bien existen pruebas unitarias, es un punto que lo veo más asociado a desarrollo de aplicaciones. En este momento no veo que tanta utilidad pudieran tener para los scripts de administración.

Fue padre. Si, lo acepto. Me tardé más tiempo de lo que requiere la tarea pero valió la pena. Voy a buscar la manera de hacerlo más seguido. De hecho, voy a solicitar que instalen Ruby en los Solaris. A ver si no se me paniquean. :D

Finito.

1 comentario:

COMPERMISOS dijo...

jejejej
ruby,

yo uso normalmente bash
se perl pero se me ase demasido pesado mantner un script en perl.
entonses por custiones comunes
uos bash y php

php para tareas que requieren de registros y cosas asi.
pero chanse y ago la prueba en ruby