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.