Executando métodos sem se preocupar com exceções no Ruby

Cansado de ter que verificar se um objeto existe antes de chamar algum método ou acessar um atributo?

if @object && @object.some && @object.some.fancy && @object.some.fancy.call
  # do something
else
  puts "meh. i don't like this syntax!"
end

Concordo que isto não é muito comum, mas você já deve ter feito algo como isto:

if @object && @object.respond_to?(:some_method) && @object.some_method
  # do something
end

Evite este tipo de aborrecimento trazido por estas verificações, adicionando um método como este:

def try(&block)
  raise 'No block given' unless block_given?
  yield rescue nil
end

if try { @objet.some.fancy.call }
  # do something
else
  puts 'hey! this call returned nil, false or threw an exception'
end

Muito mais com a cara de Ruby, não acha?