Carlos Brando

Nome do Jogo

Porque eu defendo o Shoulda

Como alguns já viram no último podcast eu costumo defender muito os projetos e sistemas que gosto. O GitHub pode não ter a importancia que o RubyForge “teve” para a comunidade Ruby no mundo, mas acredito seriamente no valor deste projeto e aposto minhas fichas nele.

O fato dele ser um projeto comercial só aumenta ainda mais minha confiança, porque ele é um projeto opensource-like com a diferença de ser mantido não somente pela boa vontade dos desenvolvedores, mas sim por dinheiro, e isto é muito bom porque estimula a “boa vontade”, se é que vocês me entendem.

Além disso o GitHub evoluiu os projetos opensource além do que o RubyForge conseguiu, tornou muito mais fácil contribuir para um projeto, criar forks, entrar em contato com desenvolvedores, e tudo de uma forma que estimula o social.

Outro projeto que muito me agrada é o Shoulda, e vou explicar o motivo disto. O Sholda diferente do RSpec, por exemplo, foi feito para o Rails (embora você possa usá-lo em outros tipos de projetos isto não faz muito sentido) e isto dá ao projeto uma liberdade que não pode ser aplicada ao RSPec que precisa ser mais genérico.

Claro que existem iniciativas semelhantes aplicadas ao RSpec, mas nenhuma é tão madura.

Outra vantagem é que o Shoulda não precisa alterar nada em seu projeto Rails, já que ele trabalha em cima do Test::Unit que é o framework padrão para testes no Rails. E se você já costuma criar testes neste framework, a curva de aprendizado é perto de zero.

E agora a terceira grande vantagem é a possibilidade de criar macros para testes. Funciona mais ou menos assim: Você cria um plugin que adiciona uma certa funcionalidade a um objeto do ActiveRecord, então você cria uma macro de testes para isto e a coloca dentro de uma pasta shoulda_macros na raiz do seu gem ou plugin. Assim, os usuários do seu projeto só precisam incluir uma chamada de método nos testes dos modelos que implementarem estas novas funcionalidades e tudo estará seguro.

Por exemplo, se você estiver usando o plugin Paperclip, basta adicionar a seguinte linha no arquivo de teste do modelo para garantir que tudo vai funcionar bem:

class UserTest < Test::Unit::TestCase
  should_have_attached_file :avatar
end

Sou tão fõ do projeto que mantenho, junto com o Dr. Nic, os Bundles do TextMate para o Shoulda e posso garantir que ele está completo. Já enviei alguns patchs para o projeto principal também.

Se tem coisas que eu não sou é preciosista ou saudosita. Sou adépto ao novo, e quando considero que algo novo é melhor do que o antigo não tenho medo de mudar. Não é porque algo me serviu durante muitos anos que devo continuar usando-o o resto da vida, se fosse assim eu não teria comprado um travesseiro novo, nem um macbook, nem uma TV nova, nem um…

Comments