Invalid Dates Bug Patch
The following is a pure Ruby-based patch to address the issues raised in Bug 10588 Invalid Dates:
class SmartTime < Time def self.mktime year, month, day case month when 4, 6, 9, 11 if day == 31 raise ArgumentError, 'argument out of range _ APR, JUNE, SEP, NOV', caller else super end when 2 case day when 30, 31 raise ArgumentError, 'argument out of range _ FEB', caller when 29 if year%100 == 0 if year%400 == 0 super else raise ArgumentError, 'argument out of range _ FEB', caller end else if year%4 == 0 super else raise ArgumentError, 'argument out of range _ FEB', caller end end else super end else super end end end
Another version of this patch with a light-hearted commentary, using the same algorithm but a slightly different approach, is available at: otherimran.wordpress.com
Ruby is a mature, productive programming tool. It’s not a silly toy. It doesn’t deserve to have such dumb bugs lurking inside its core classes.
That’s just me, exercising my right to politely protest the decision made by Ruby maintainers. I hope they would reconsider and fix it internally.
Updated by NorthernLights (Imran "") over 8 years ago
I've highlighted this bug and offered a patch also. I love Ruby a lot. I wish I could say the same about its community.
It is a working solution. Instead of trolling, share your ingenious alternative.