Carlos Brando

Nome do Jogo

Edge Rails: Erro ao usar o método end_of_quarter

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!

Comments