Monitore Erros de Seus Projetos com RSS e JQuery


English Version (Google Translate)

Uma das features mais legais que considero no Rails é como ele trata os logs. Tudo é gravado em logs dependendo do ambiente que estiver rodando (então temos um log para development, production e test) e nestes logs temos informações importantes como as query executadas, tempo das requisições, templates renderizados, e muitas outras informaçõe além das exceções capturadas em seu aplicativo.

Nós sabemos que não importa a qualidade da suite de testes automatizados ainda sim vão existir erros. Mas erros em modo de devlopment não são problemáticos, pois você está esperando isso mas em produção você não vai ficar monitorando os logs de cada projeto online que você tem durante o tempo todo, e se ocorrer um erro com um usuário de um cliente, provávelmente você não vai ficar sabendo.

Então uma solução ideal é guardar esta exceções como Ryan Bates ensina neste screencast . Ryan Bates utiliza o plugin Exception_logger para armazenar todos os erros e parâmetros que causaram o erro em um model, desta forma fica fácil simular o erro novamente. Mas estas mensagens ficam disponíveis em uma area do website ou sistema (normalmente www.projeto.com.br/logged_exceptions ).

Mas o problema é que será que você vai se lembrar de acessar todos os dias cada página de erro dos seus projetos? Provavelmente não, então basta assinar o feed RSS disponibilizado pelo plugin e ficar atento aos feeds de erros do seus projeto. Muito mais simples, não?

Mas o problema é que o plugin utiliza o esquema de nomes antigos do Rails e o RSS não será renderizado. Para resolver isto criei um fork do projeto alterando todos os nomes da views, inclusive a do RSS, para atender as convenções do Rails 2.0 ou superior (ok, nada de mais, mas se alguem precisar está ai). Mandei o pull request para o projeto original mas ainda não respoderam, assim que atualizarem altero aqui no post.

Mas ainda sobrou um problema, como não utilizo mais Prototype todas as chamadas ajax e js do plugin simplesmente não faziam nada. Então acabei encontrando este plugin que é uma versão do exception_logger mas utilizando jquery. Acabei também alterando as views para Rails 2.0 e o fork está aqui , caso alguem precise.

Problema resolvido, agora todos os meus últimos projetos estão sendo monitorados através do meu leitor de RSS e a interface usando Jquery.

Mais uma pequena dica

Se você quer algum tipo de autenticação para a seção exceções dos seus projetos então considere utilizar uma autenticação por http ao invés de algo como restful_authentication ou authlogic desta forma mesmo se o cliente apagar todos os usuários você poderá continuar acessando a seção dos erros.

Basta adicionar o código abaixo em seu enviroment que deve ser autenticado:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

  # Exception logger authentication code
  config.after_initialize do
    # require 'application' unless Object.const_defined?(:ApplicationController)
    LoggedExceptionsController.class_eval do
      # set the same session key as the app
      session :session_key => 'SESSION KEY OF YOUR PROJECT'        
      before_filter :authenticate

      # sets the application name for the rss feeds
      self.application_name = "YOUR APPLICATION NAME"

      protected
        def authenticate
          authenticate_or_request_with_http_basic do |username, password|
            username == "YOUR USER NAME" && password == "YOUR PASSWORD"
          end
        end
    end
  end
  

Comentário