That's an interesting proposal ... but it still doesn't solve the basic question of unboxing nulls. But ... let's let the J-Heads worry about that.
Ruby handles missing hash values a bit differently. If the key is not in the hash, you get a default value (which is typically nil, but can be something else).
h = Hash.new\n h['not_there'] #=> nil\n\n g = Hash.new { 0 }\n g['not_there'] #=> 0\n\n j = Hash.new { fail "key not found" }\n j['not_there'] #=> Exception