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.
