Publicado por Rafael Rosa em 28 de September de 2009

Watchr – Uma alternativa flexível e genérica ao AutoTest

watcherO Watchr é uma ferramenta de teste contínuo, desenvolvida por Martin Aumont seguindo a mesma idéia do Autotest (que faz parte do pacote ZenTest).

De maneira bastante simplificada, ele observa um (ou todos!!) arquivos do seu projeto e executa qualquer código Ruby definido por você quando são alterados. A configuração do Watchr tem o seguinte formato:

watch('padrao_regex') { |resultados_do_match| comando_a_ser_executado }

Por exemplo para reproduzir um comportamento semelhante ao do Autotest, você só precisa especificar que o Watchr deve excutar os testes sempre que um arquivo de teste ou biblioteca for alterado, assim (copiado do blog do Martin):

watch('test/test_.*\.rb') { |md| system "ruby #{md[0]}"}
watch('lib/(.*)\.rb')     { |md| system "ruby test/test_#{md[1]}.rb"}

...mas ele pode ser utilizado para muito mais do que executar testes. Você pode utilizá-lo para gerar documentação automaticamente, fazer o build de suas gems ou realizar qualquer outra tarefa que possa ser executada com o Ruby.

Para começar a utilizar o Watchr, basta instalar a gem (que está no Gemcutter), e executar o comando watchr no diretório-raiz do seu projeto, passando a localização do script de configuração:

$ gem install watchr --source=http://gemcutter.org
$ cd to/your/project/root
$ watchr path/to/script

O código-fonte e alguma documentação (incluindo exemplos de scripts) está disponível no Github, e também a um artigo escrito Martin.

Se quiser algo ainda mais simples, o editor do Ruby Inside em inglês, Peter Cooper, disponibilizou uma Rake task simples que pode executar o script que você quiser quando um arquivo é alterado dentro de um projeto, vale uma olhada.

Deixe um Comentário