Carlos Brando

Nome do Jogo

Edge Rails: Backtrace Cleaner

Já ouviu falar do plugin Quiet Backtrace criado pela Thoughtbot, a mesma galera por trás do Paperclip e Shoulda? Este plugin é muito interessante porque ele permite que você remova certas linhas do backtrace do Rails, tornando o log muito menor e simplificando a localização de problemas.

O conceito por trás deste plugin foi adicionado ao Rails. Um novo initializer chamado backtrace_silencers.rb foi criado e virá com algumas linhas de exemplo comentadas, assim:

# Be sure to restart your server when you modify this file.

# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }

# You can also remove all the silencers if you're trying do debug a problem that might steem from framework code.
# Rails.backtrace_cleaner.remove_silencers!

Neste arquivo você pode incluir silenciadores e filtros para o backtrace. Por exemplo o seguinte silenciador removerá do backtrace qualquer linha que contenha a palavra mongrel:

Rails.backtrace_cleaner.add_silencer { |line| line =~ /mongrel/ }

Os filtros funcionam de uma maneira um pouco diferente, não removendo a linha, mas substituindo trechos do backtrace por alguma outra coisa. No exemplo abaixo estou fazendo com que toda vez que a palavra mongrel aparecer no backtrace ela seja substituída por ‘aeiou’:

Rails.backtrace_cleaner.add_filter { |line| line.gsub("mongrel", 'aeiou') }

Para desligar esta funcionalidade temporariamente basta tirar o comentário da linha abaixo:

Rails.backtrace_cleaner.remove_silencers!

Usado com sabedoria, este novo recurso pode se tornar uma ferramenta poderosa.


Todos os exemplos dados aqui funcionarão somente no Ruby on Rails 2.3/3.0 ou superior. Você pode encontrar mais detalhes sobre esta e outras novidades acompanhando a série Edge Rails.

Comments