If you find yourself checking for nil constantly, a null object of some sort can help.
I wanted to make a null object for dates. Here is the NullDate class I came up with.
class NullDate include Comparable def strftime format "No date yet." end def to_s "No date yet." end def <=>(other_date) Time.new(0000,1,1) <=> other_date end def to_datetime Time.new(0000,1,1).to_datetime end end
I found myself checking for nil all over the place when comparing dates, so I
made my NullDate class implement <=>, and just have it compare to
Time.new(0000,1,1), which is the lowest time/date value possible. Be sure to
to_datetime, or you’ll get an error like this:
Here’s an ascii.io screencast I made that demonstrates use of this class!