Use Hash # fetch sobre Hash # []

Algumas vantagens:

1) Depuração mais fácil

Você obtém a exceção KeyError imediatamente ao tentar acessar o valor de hash que não foi definido, em vez de passar nil para o seu código e depurar o “método X indefinido para nil: NilClass”

2) Vamos especificar o valor padrão

h.fetch("username", "guest")
#=> "guest"
h
.fetch("username") { |key| "#{key} is not set"}
#=> "username is not set"

Baseado no artigo da 8th Light