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.
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]}
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.
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]}
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 ..: *
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
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]}
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.
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.
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]}
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
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.
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é!
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]}
à 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]}
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]}
}
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
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]}
}