www.kraxnet.cz Xnet.cz | XNet Blog | Administrace | Railshosting.cz  

XNet Wiki Encyklopedie návodů, postupů a informací pro často řešené problémy

 

Jak nastavit plugin ExceptionNotification pro rozesílání e-mailů s chybami v aplikaci

Pro sledování toho, zda-li vaše aplikace běží bez chyb, můžete využít plugin ExceptionNotification (http://github.com/rails/exception_notification/tree/master) od Jamise Bucka.

Na tail -f log/production.log (nebo nedejbože vypisování debug hlášek do stránky) pak můžete zapomenout :) a každá chyba vám přijde mailem i s backtrace zhruba v tomto formátu:

From:     exception.notifier@default.com
Subject:     [My app error] events#index (ActionView::TemplateError) "undefined method `name' for #<Event:0xad37c3c>" 
Date:     16. června 2008 19:50:54 GMT+02:00
To:     vas@email.cz

A ActionView::TemplateError occurred in events#index:

 undefined method `name' for #<Event:0xad37c3c>
 On line #17 of events/_form.rhtml

   15:       </td>
   16:         <td valign="top">
   17:       <%= f.text_field :name, :class => 'm' %>

   /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/attribute_methods.rb:205:in `method_missing'

...

-------------------------------
Request:
-------------------------------

 * URL       : http://vase_aplikace
 * IP address: 123.123.123.123
 * Parameters: {"event_id"=>"1", "action"=>"index", "controller"=>"events"}
 * Rails root: /usr/home/deployer/app/releases/20080609123456

-------------------------------
Session:
-------------------------------

...

-------------------------------
Environment:
-------------------------------

...

-------------------------------
Backtrace:
-------------------------------

...

Plugin si nainstalujete standardním příkazem ruby script/plugin install exception_notification v adresáři vaší aplikace.

Dle návodu integrujte plugin do controllerů vaší aplikace:

class ApplicationController < ActionController::Base
  include ExceptionNotifiable
  ...
end

a nastavte e-mailové adresy, na které chcete nechat zprávy zasílat—zcela na konci souboru RAILS_ROOT/config/environment.rb uvedete:

ExceptionNotifier.exception_recipients = %w(vas@email.cz)
ExceptionNotifier.email_prefix = "[Chyba v moji aplikaci] " 

Důležité upozornění: Tuto deklaraci uveďte až po konci bloku Rails::Initializer.run, tedy laicky řečeno “za end” :)

Přečtěte si další možnosti konfigurace v README k pluginu.