Also, you can't make a Ruby object falsy. So if you overload #nil? you get fun problems like:
obj.nil? # => true
!!obj # => true obj.nil? # => true
!!obj # => trueYou can override ! (see http://www.rubyinside.com/rubys-unary-operators-and-how-to-r... from earlier this week) so !!obj can evaluate to false. But there is still this to solve:
ruby-1.9.3-p0 :008 > obj ? true : false
=> true
ruby-1.9.3-p0 :009 >
If only there was a #to_bool to override...(For the record: yuck).