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!"
endConcordo 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
endEvite 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'
endMuito mais com a cara de Ruby, não acha?