web-dev-qa-db-fra.com

Notification d'exception Gem and Rails 3

J'essaie de le faire fonctionner, mais je vois "ExceptionNotifier de constante non initialisée" chaque fois que je démarre 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 fichier readme de github dans config/application.rb, config/environment.rb et config.ru. J'ai remplacé "Whatever" par mon nom d'application.

41
Darren Hinderer

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

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

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

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

La dernière version de la gemme officielle fonctionne avec Rails 3, vous pouvez la trouver ici: https://github.com/smartinez87/exception_notification .

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

21

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]}
13
BvuRVKyUVlViVIc7

Restez simple, idiot</ i>

Dans gemfile

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

Dans fichier application.rb 

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

Vous êtes fait ..: *

10
Saqib R.

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

config.middleware.use ":: ExceptionNotifier"

au lieu de

config.middleware.use ExceptionNotifier

4
Darren Hinderer

Le dépôt 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" <[email protected]>},
  :exception_recipients => %w{[email protected]}  
4
dave elkins

Si vous utilisez un rescue_from Exception, with: :render_500 pour afficher un modèle/page 500, il n’envoie plus de courrier électronique contenant uniquement ce message. 

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

Vous aurez besoin de 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 traitement des exceptions dans votre contrôleur d'application.

3
Stone

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 parce que les noms diffèrent que vous devez spécifier explicitement) . Tous les autres correctifs mentionnés précédemment ont été fusionnés, je le suppose.

3
nathanvda

https://github.com/smartinez87/exception_notification

Cette gemme a été mise à jour pour Rails 3.x et je viens de tester la version 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" <[email protected]>},
  :exception_recipients => %w{[email protected]}
3
Brian Samson

J'ai pu le faire fonctionner avec les éléments suivants dans production.rb:

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

Cela a pris un peu de travail mais j'ai eu Exception Notifier avec Rails 3.0.0:

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

(Si vous ne souhaitez pas utiliser ce fork, appliquez simplement son correctif manuellement au plug-in Rails d'origine: il ne contient que 3 lignes.) Il corrige l'erreur 'méthode indéfinie nom_contrôleur'

2- Dans application.rb: 

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

3- Appliquer le patch de Lawrence Pit . (UPDATE: Ce lien semble rompu)} Corrige l'erreur uninitialized constant ActiveRecord::RecordNotFound comme documenté ici .

C'est tout.

2
Ryan Horrisberger

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 importée parce que c'est une version corrigée pour éviter l'erreur 'méthode indéfinie nom_contrôleur' ​​et: require nécessite d'exiger la bonne bibliothèque 

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

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

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

À votre santé! 

2

J'ai eu le même problème tout à l'heure et je l'ai résolu de cette façon:

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" <[email protected]>},
  :exception_recipients => %w{[email protected]}

Je suis en train de refactoriser un projet Rails 2.3 en 3.0, je ne l'ai donc pas essayé lors d'une nouvelle installation.

Modifier:  

En fait, il pourrait être préférable (ou "plus correct") de placer l'initialisation ExceptionNotifier dans un fichier d'initialisation séparé 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" <[email protected]>},
  :exception_recipients => %w{[email protected]}
2
Fredrik Boström

à ce jour (2012-août-03), le site officiel est le suivant: https://github.com/smartinez87/exception_notification et, selon le README, il prend parfaitement en charge Rails3. 

étape 1. éditez votre Gemfile: 

gem 'exception_notification'

étape 2. 

A partir de Rails 3 ExceptionNotification est utilisé en tant que middleware de rack, donc vous pouvez configurer ses options sur votre fichier config.ru ou dans le fichier environnement que vous voulez qu'il fonctionne. Dans la plupart des cas, vous voudriez ExceptionNotification pour fonctionner en production. Vous pouvez le faire fonctionner par

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

RÉPONSE MISE À JOUR À PARTIR DU 3/14 ...

Il vous suffit de faire gem exception_notification dans votre fichier gem. Pas de 'besoin' nécessaire.

En outre, d'autres changements viennent tout droit de la documentation ...

"À partir de la version 4.x, la syntaxe de configuration a été modifiée. Toutes les options relatives au courrier électronique DOIVENT ÊTRE imbriquées sous la: clé de courrier électronique."

ainsi...

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

J'utilise Rails 3.0.4 et j'ai eu le même problème que ci-dessus. La seule solution qui a fonctionné pour moi a été d'installer la v1.2 de l'exception_notification pour Rails 3 (assurez-vous d'utiliser la bonne branche/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" <[email protected]>},
  :exception_recipients => %w{[email protected]}

Cela ne fonctionnait vraiment pas pour moi en tant que gemme et le fichier Readme dit "Plugin Exception Notifier pour Rails" et ne mentionne rien sur son installation en tant que gem.

Harry

1
harryhorn

J'ai copié et collé la configuration exception_notification d'une ancienne application à une autre et elle a échoué. Elle m'a amené ici et aucune des réponses ci-dessus n'a été mise à jour. Depuis la version 4.x, le middleware a été renommé. ExceptionNotification::Rack, Ainsi, la configuration du middleware ressemble à ceci:

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