A concise explanation of nil v. empty v. blank in Ruby on Rails

I find myself repeatedly looking for a clear definition of the differences of nil? , blank? , and empty? in Ruby on Rails. Here’s the closest I’ve come:

  • blank? objects are false, empty, or a whitespace string. For example, "" , " " , nil , [] , and {} are blank.
  • nil? objects are instances of NilClass.
  • empty? objects are class-specific, and the definition varies from class to class. A string is empty if it has no characters, and an array is empty if it contains no items.

Is there anything missing, or a tighter comparison that can be made?