Un buen día, Ale Muñoz dejó caer, como de pasada, la siguiente sentencia:
Trabajar menos, en mi opinión, es una obligación moral de todo el que use ordenadores
Cuando lo leí me sentí tocado. Fin del prólogo.
El otro día, mientras preparaba unas hojas de estilo XSL, me descubrí atrapado en una especie de bucle inoperante. Viene a ser el siguiente:
- edito un fichero;
- lo guardo;
- me voy a la terminal;
- lanzo un comando (un
makeo similar); - me voy al navegador;
- compruebo el resultado del comando refrescando el navegador;
- me voy al editor;
- volvemos a empezar.
Un rollo, vamos. Púseme a buscar opciones para la automatización del proceso. Estaba claro que lo que tenía que hacer era observar los cambios en determinados ficheros y realizar alguna acción en tal caso. Exactamente lo que hace stakeout (lo encontrarás en Staking Out File Changes). Si te decides, como yo, a usar la versión ruby:
- Copia el script de la página enlazada
- Crea un fichero stakeout.rb, hazlo ejecutable y colócalo dentro de tu path.
El uso es sencillísimo. El programa recibe como parámetros el comando a ejecutar y los ficheros a observar. Para crear la lista de ficheros observados podemos utilizar sintaxis glob. Un caso:
choan$ stakeout.rb ./process.rb *.xsl template.html process.rb
=> template.html changed, running ./process.rb
=> done
Cuando nos hartemos de trabajar, podemos matar el proceso a golpe de ctrl + C.
Reducimos pues, el proceso, en unos cuantos pasos. Aleluya.


3 comentarios RSS
[…] Automatización: vigila cambios en ficheros y reacciona - Dizque (tags: automatic ruby) […]
Según he creido entender de los pasos 1,2,5,6,7 y 8 no te libras. Te ahorras un alt + tabulador -> flecha -> enter.
En realidad ahorras mucho más. No solo no te tienes que ir a la terminal, tampoco necesitas situar el foco en la ventana adecuada. Ni depender de la historia para que el “flecha arriba” repita el último comando.
De los pasos 1 y 2 creo que no nos salvaremos nunca ;)
El paso 5 (voy al navegador) podría evitarse incluyendo un cambio de foco en “process.rb” (o el comando que sea que utilices). Para mi caso no es práctico. Por una parte, porque no quiero cambiar el foco cada vez que guarde un fichero. Por otra, porque el control del resultado no lo realizo necesariamente en el navegador.
En resumen: con este truquillo tienes una base para automatizar en reacción a las modificaciones de ficheros. Lo que automatices o dejes de automatizar es cosa tuya. Y en muchas ocasiones no requerirá de control humano del resultado.