I'm examining Kirbybase for use it a project and was surprised to  
find this bit of code in it:

#----------------------------------------------------------------------- 
----
# NilClass
#----------------------------------------------------------------------- 
----
class NilClass
      
#-----------------------------------------------------------------------
     # method_missing
      
#-----------------------------------------------------------------------
     #
     # This code is necessary because if, inside a select condition code
     # block, there is a case where you are trying to do an expression
     # against a table field that is equal to nil, I don't want a method
     # missing exception to occur.  I just want the expression to be  
nil.  I
     # initially had this method returning false, but then I had an  
issue
     # where I had a YAML field that was supposed to hold an Array.   
If the
     # field was empty (i.e. nil) it was actually returning false  
when it
     # should be returning nil.  Since nil evaluates to false, it  
works if I
     # return nil.
     # Here's an example:
     # #select { |r| r.speed > 300 }
     # What happens if speed is nil (basically NULL in DBMS terms)?   
Without
     # this code, an exception is going to be raised, which is not  
what we
     # really want.  We really want this expression to return nil.
     def method_missing(method_id, *stuff)
         return nil
     end
end

This has been a popular discussion lately, but I just don't think  
loading a database library should fundamentally change the language.   
ActiveRecord doesn't hack NilClass and we seem to do okay with that.   
Why can't the above example just be coded as:

   select { |r| r.speed and r.speed > 300 }

or:

   select { |r| r.speed > 300 rescue false }

Are Kirbybase users really liking this behavior?

James Edward Gray II