Notification d’exception Gem et Rails 3

J’essaie de le faire fonctionner, mais je vois “ExceptionNotifier constant non initialisé” à chaque démarrage de mon serveur.

http://github.com/rails/exception_notification

Dans mon Gemfile j’ai

gem “exception_notification”,: git => ” http://github.com/rails/exception_notification.git ” ,: branch => “master”

J’ai essayé de mettre la configuration comme indiqué dans le readme de github dans config / application.rb, config / environment.rb et config.ru. J’ai remplacé “Quelque chose” par le nom de ma candidature.

Toutes les réponses précédentes sont obsolètes, vous pouvez maintenant simplement append ceci à votre fichier gemfile:

gem 'exception_notification', :require => 'exception_notifier' 

Et éditez votre fichier de configuration production.rb comme indiqué dans le fichier readme:

 config.middleware.use ExceptionNotifier, :email_prefix => "[Exception] ", :sender_address => %{"Exception Notifier" }, :exception_recipients => %w{[email protected]} 

La dernière version de gem officiel fonctionne avec Rails 3, vous pouvez le trouver ici: https://github.com/smartinez87/exception_notification .

La prochaine version de gem rendra l’option :require => 'exception_notifier' inutile.

Ok, ça marche maintenant pour moi:

 # Gemfile gem "exception_notification", :git => "git://github.com/rails/exception_notification", :require => 'exception_notifier' # application.rb, inside the config block config.middleware.use ::ExceptionNotifier, :email_prefix => "ApplicationName-Errors: ", :sender_address => %w{[email protected]}, :exception_recipients => %w{[email protected]} 

Reste simple

En gemfile

 gem 'exception_notification', :require => 'exception_notifier' 

Dans le fichier application.rb

  config.middleware.use ExceptionNotifier, :email_prefix => "[ERROR] ", :sender_address => %{"Exception Notifier" }, :exception_recipients => %w{[email protected]} 

Vous êtes fait ..: *

Il semble que Rails 3 ne puisse pas utiliser ce plugin sous forme de gem. Peut-être que les applications rack ne peuvent pas être chargées à partir de gems? Je l’ai installé comme un plugin et j’ai changé la syntaxe de configuration:

config.middleware.use “:: ExceptionNotifier”

au lieu de

config.middleware.use ExceptionNotifier

Le repo officiel sur github est maintenant: https://github.com/smartinez87/exception_notification

Dans le Gemfile

 gem "exception_notification", :require => 'exception_notifier', :git => "https://github.com/smartinez87/exception_notification.git" 

Dans config \ initializers \ exception_notification.rb

 Rails.application.config.middleware.use ExceptionNotifier, :email_prefix => "[Whatever] ", :sender_address => %{"notifier" }, :exception_recipients => %w{[email protected]} 

En fait, maintenant, c’est beaucoup plus facile. Dans votre Gemfile vous devez écrire:

 gem "exception_notification", :git => "http://github.com/rails/exception_notification.git", :require => 'exception_notifier' 

Et tout devrait être corrigé. L’option :require est cruciale (je suppose, car les noms diffèrent, vous devez spécifier explicitement). Tous les autres correctifs mentionnés précédemment ont été fusionnés, je présume.

J’ai pu le faire fonctionner avec ce qui suit dans production.rb:

 config.after_initialize do config.middleware.use ExceptionNotifier, :email_prefix => "[Whatever] ", :sender_address => %{"notifier" }, :exception_recipients => %w{[email protected]} end 

https://github.com/smartinez87/exception_notification

Ce joyau a été mis à jour pour les rails 3.x et je viens de tester sur 3.0.7 et l’installation est beaucoup plus simple.

Gemfile:

 gem 'exception_notification' 

Initialiseur:

 Rails.application.config.middleware.use ExceptionNotifier, :email_prefix => "[Whatever] ", :sender_address => %{"notifier" }, :exception_recipients => %w{[email protected]} 

Si vous faites une rescue_from Exception, with: :render_500 pour gérer l’affichage d’un modèle / page 500, il n’envoie plus d’e-mail avec ceci

  config.middleware.use ExceptionNotifier, :email_prefix => "[some prefix] ", :sender_address => %{"Notifier" }, :exception_recipients => %w{[email protected]} 

Vous devrez l’envoyer manuellement dans la méthode qui gère l’exception

 def render_500(exception) # email an error email if there's a 500 in production mode if Rails.env.production? ExceptionNotifier::Notifier.exception_notification(request.env, exception).deliver end end 

Mettez donc les éléments de configuration dans votre environnement (production.rb) et le code de gestion des exceptions dans votre contrôleur d’application.

J’ai eu le même problème tout à l’heure et j’ai résolu le problème de la manière suivante:

Gemfile

 source 'http://rubygems.org' gem 'exception_notification_rails3', :require => 'exception_notifier' 

application.rb

 config.middleware.use ExceptionNotifier, :email_prefix => "[some prefix] ", :sender_address => %{"Notifier" }, :exception_recipients => %w{[email protected]} 

Je suis en train de refactoriser un projet Rails 2.3 en 3.0, donc je n’ai pas essayé ceci sur une nouvelle installation.

Modifier:

Il serait peut-être préférable (ou “plus correct”) de placer l’initialisation ExceptionNotifier dans un fichier d’initialisation distinct dans config / initializers / au lieu de application.rb.

config / initializers / exception_notifier.rb

 MyApp::Application.config.middleware.use ExceptionNotifier, :email_prefix => "[some prefix] ", :sender_address => %{"Notifier" }, :exception_recipients => %w{[email protected]} 

En utilisant Rails 3.0.3, cela fonctionne pour moi:

 gem "exception_notification", :git => "https://github.com/sickill/exception_notification.git", :require => 'exception_notifier' 

: la partie git est imscope car c’est une version corrigée pour contourner la “méthode indéfinie controller_name error” et: nécessite de demander la bonne lib.

Ensuite, dans mon fichier d’environnement production.rb, je n’ai que cela (à partir du manuel)

  config.middleware.use ExceptionNotifier, :email_prefix => "[MyApp] ", :sender_address => %{"notifier" }, :exception_recipients => %w{[email protected]} 

On dirait qu’il y a beaucoup de façons différentes pour que cela fonctionne, mais c’était ma façon.

À votre santé!

Il a fallu un peu de travail mais j’ai obtenu Notifier Exception avec Rails 3.0.0:

rails plugin install http://github.com/sickill/exception_notification.git 1- rails plugin install http://github.com/sickill/exception_notification.git

(Si vous ne voulez pas utiliser ce fork, appliquez son patch manuellement au plug-in Rails original: il ne contient que 3 lignes.) Il corrige la “méthode non définie controller_name error”

2- Dans application.rb:

 config.middleware.use "::ExceptionNotifier" , :email_prefix => "[Whatever] ", :sender_address => %{"notifier" }, :exception_recipients => %w{[email protected]} 

3- Appliquer le patch de Lawrence Pit . ( UPDATE: ce lien semble être cassé) Il corrige l’erreur uninitialized constant ActiveRecord::RecordNotFound comme documenté ici .

C’est tout.

Jusqu’à maintenant (2012-août-03), le site officiel est: https://github.com/smartinez87/exception_notification , et selon le fichier README, il supporte parfaitement Rails3.

étape 1. éditez votre Gemfile:

 gem 'exception_notification' 

étape 2.

A partir de Rails 3 ExceptionNotification est utilisé comme un middleware de rack, vous pouvez donc configurer ses options sur votre fichier config.ru ou dans l’environnement que vous souhaitez qu’il exécute. Dans la plupart des cas, vous souhaitez que ExceptionNotification s’exécute en production. Vous pouvez le faire fonctionner par

 Whatever::Application.config.middleware.use ExceptionNotifier, :email_prefix => "[Whatever] ", :sender_address => %{"notifier" }, :exception_recipients => %w{[email protected]} 

J’utilise les rails 3.0.4 et j’ai le même problème que ci-dessus. La seule solution qui a fonctionné pour moi était d’installer la v1.2 de exception_notification pour les rails 3 (assurez-vous d’utiliser la bonne twig / version) en tant que PLUGIN

 rails plugin install https://github.com/railsware/exception_notification.git 

et utiliser dans production.rb le code que tout le monde mentionne:

 config.middleware.use ExceptionNotifier, :email_prefix => "[some prefix] ", :sender_address => %{"Notifier" }, :exception_recipients => %w{[email protected]} 

Cela n’a certainement pas fonctionné pour moi en tant que bijou et le readme dit “Plug-in de notification d’exception pour Rails” et ne mentionne rien sur son installation en tant que gem.

Harry

MISE À JOUR RÉPONSE à partir de 3/14 …

Il vous suffit de faire gem exception_notification dans votre fichier gem. Non ‘besoin’ nécessaire.

En outre, d’autres modifications viennent directement des documents …

“A partir de la version 4.x, la syntaxe de configuration a été modifiée. Toutes les options relatives au courrier électronique DOIVENT être nestedes sous la clé: email.”

ainsi…

 Whatever::Application.config.middleware.use ExceptionNotification::Rack, :email => { :email_prefix => "[Whatever] ", :sender_address => %{"notifier" }, :exception_recipients => %w{[email protected]} } 

J’ai copié et collé la configuration exception_notification de l’ancienne application vers une nouvelle application et celle-ci a échoué. Cela m’a amené ici et aucune des réponses ci-dessus n’était à jour. Depuis la version 4.x, le middleware a été renommé ExceptionNotification::Rack , de sorte que la configuration du middleware se présente comme suit:

 Whatever::Application.config.middleware.use ExceptionNotification::Rack, :email => { :email_prefix => "[Whatever] ", :sender_address => %{"notifier" }, :exception_recipients => %w{[email protected]} }