Nem bem saiu o Rails 2.1 e já foi encontrado um erro sério. Entre no irb e tente rodar isto:
Date.new(2008, 5, 31).end_of_quarter
ERRO!
Por que? A implementação do método end_of_quarter foi feita da maneira errada, ele avança até o último mês do trimestre e depois pega último dia. O problema é que ele apenas avança o mês, e como estou partindo do dia 31 de maio, ele tentar criar uma nova instância do objeto Date para 31 de junho, que não existe. Com o objeto Time não é disparado uma exceção, mas ele retorna a data errada: 31 de julho.
No Edge Rails isto já foi corrigido, mas quem estiver usando o Rails 2.1 vai ter este problema.
Muito cuidado, porque este erro só ocorrerá se usarmos o método end_of_quarter nos dias 31 de maio, julho e agosto. Então… muito cuidado.
Para quem não gosta de viver perigosamente usando o edge rails, e também não quer deixar sua aplicação com um erro que pode aparecer de uma hora para a outra, eu criei um plugin com o código que corrige o bug. Na verdade, toda vez que alguma correção sair vou tentar manter este plugin atualizado.
Para instalar:
./script/plugin install git://github.com/carlosbrando/rails21_fixes.git
Gostou? Que tal me recomendar no WWR. É só clicar aqui e pronto!