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!
Nice man! :-)
Logo tu vai pro core merecidamente! :D
Abraço
Nossa, foi rápido hein?
Você podia ter feito um patch e mandado pro core logo.
Engraçado porque o problema só foi corrigido na classe Date, mas na classe Time não. E embora eu tenha mandado um patch para lá, ele foi parece que foi rejeitado…