irb(main):001:0> h = Hash.new("go fish")
=> {}
irb(main):002:0> h.delete("foo")
=> nil

$ ri Hash#delete
------------------------------------------------------------ Hash#delete
      hsh.delete(key)                   => value
      hsh.delete(key) {| key | block }  => value
------------------------------------------------------------------------
      Deletes and returns a key-value pair from hsh whose key is equal
      to key. If the key is not found, returns the default value. If the
      optional code block is given and the key is not found, pass in the
      key and return the result of block.

         h = { "a" => 100, "b" => 200 }
         h.delete("a")                              #=> 100
         h.delete("z")                              #=> nil
         h.delete("z") { |el| "#{el} not found" }   #=> "z not found"


I expected
 > h.delete("foo") #=> "go fish"
or for the docs to say 'If the key is not found, returns nil'.

Also, reading over that again is seems the first line should different, 
maybe
"Deletes and returns the value from _hsh_ whose key is equal to _key_."
I guess that is not quite right either, it doesn't mention that the key 
is deleted... but a key-value pair is not returned either :-/

-Charlie