Publicado por Rafael Rosa em 28 de September de 2009
Watchr – Uma alternativa flexível e genérica ao AutoTest
Clique aqui para adicionar ao del.icio.us | Nenhum comentário - Deixe o seu agora!
O 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.



