2009-11-15 10 views
1

J'ai installé super_exception_notifier en exécutant:Obtenir super_exception_notifier travailler

sudo gem install super_exception_notifier 

et je l'ai essayé lui permettant dans mon projet (qui a déjà la poste de travail, car il envoie des courriels à d'autres fins) comme celui-ci . Sur environment.rb I ajouté

# Notification configuration 
require 'exception_notifier' 
ExceptionNotifier.configure_exception_notifier do |config| 
    config[:exception_recipients] = %w([email protected]) 
    config[:notify_error_codes] = %W(404 405 500 503) 
end 

et sur mon application_controller.rb je:

require 'exception_notifiable' 

class ApplicationController < ActionController::Base 
    include ExceptionNotifiable 

Est-ce que je manque quelque chose? parce que peu importe quelle erreur je génère. Soit un 404, une erreur de route, une division par zéro dans un contrôleur ou dans la console, en mode développement ou production, je n'ai pas de mails et pas de messages d'erreur ou quoi que ce soit.

Des idées?

Répondre

0

Pablo,

Merci d'avoir souligné les trous dans la documentation. Je vais configurer un projet de rails vierges et énumérer clairement les étapes. J'ai déjà mis à jour le Readme en réponse aux tickets que vous avez créés sur github.

Pour vous aider avec le problème immédiat voici comment je l'ai configuré, (et cela fonctionne pour moi! :) Toutes les parties de ce ne sont pas essentielles à son fonctionnement, mais je ne l'édite pas (beaucoup), de sorte que vous pouvez voir ce que j'ai:

J'ai dans mon environment.rb:

config.load_paths += %W(#{RAILS_ROOT}/app/middlewares #{RAILS_ROOT}/app/mixins #{RAILS_ROOT}/app/classes #{RAILS_ROOT}/app/mailers #{RAILS_ROOT}/app/observers) 

J'ai un initialiseur dans config/initializers/super_exception_notification.rb

#The constants ($) are set in the config/environments files. 
    ExceptionNotifier.configure_exception_notifier do |config| 
    config[:render_only] = false 
    config[:skip_local_notification] = false 
    config[:view_path] = 'app/views/errors' 
    config[:exception_recipients] = $ERROR_MAIL_RECIPIENTS 
    config[:send_email_error_codes] = $ERROR_STATUS_SEND_EMAIL 
    #config[:sender_address] = %("RINO #{(defined?(Rails) ? Rails.env : RAILS_ENV).humanize} Error") 
    config[:sender_address] = "[email protected]" 
    config[:email_prefix] = "[RINO #{(defined?(Rails) ? Rails.env : RAILS_ENV).capitalize} ERROR] " 
    end 

Puis dans mon application.rb J'ai ceci:

include ExceptionNotifiable, CustomEnvironments 
    alias :rescue_action_locally :rescue_action_in_public if Environments.local_environments.include?(Rails.env) 
    self.error_layout = 'errors' 
    self.exception_notifiable_verbose = false 
    self.exception_notifiable_silent_exceptions = [MethodDisabled] 

J'ai aussi ce mixin dans mon app/mixins:

module CustomEnvironments 

    module Environments 
    def self.local_environments 
     %w(development test) 
    end 

    def self.deployed_environments 
     %w(production staging) 
    end 
    end 
end 

Une autre chose, ce plugin ne supprime pas les rails standards ce qui est que les choses en public sont atout. Donc, si vous avez 404.html en public, il sera toujours rendu pour 404.

  • Peter
0

Peut-être qu'il a quelque chose à voir avec ceci: http://github.com/pboling/exception_notification

notifications par courrier électronique ne surviendront que lorsque l'adresse IP est déterminée à ne pas être local. Vous pouvez spécifier certaines adresses pour qu'elles soient toujours locales afin d'obtenir une erreur détaillée au lieu de la page d'erreur générique. Vous faites ceci dans votre contrôleur (ou même par contrôleur).

consider_local "64.72.18.143", "14.17.21.25" 

Vous pouvez spécifier les masques de sous-réseau ainsi, de sorte que toutes les adresses correspondantes sont considérées comme locales:

consider_local "64.72.18.143/24" 

L'adresse "127.0.0.1" est toujours considéré comme local. Si vous souhaitez réinitialiser complètement la liste de toutes les adresses (par exemple, si vous vouliez « 127.0.0.1 » pour ne pas être considéré comme local), vous pouvez simplement faire, quelque part dans votre contrôleur:

local_addresses.clear 
+0

Eh bien, je ne ai essayé à distance à mon serveur en production; et je m'attendrais à ce que les erreurs de console soient toujours envoyées car elles sont toujours locales quand même. – Pablo

Questions connexes