41

Estoy tratando de poner esto en funcionamiento, pero veo "ExceptionNotifier constante no inicializada" cada vez que inicio mi servidor.Notificación de excepción Gema y rieles 3

http://github.com/rails/exception_notification

En mi Gemfile tengo

joya "exception_notification",: git => "http://github.com/rails/exception_notification.git",: Poder => "maestro"

he intentado poner la configuración que se se muestra en el archivo léame github dentro de config/application.rb, config/environment.rb, y config.ru. Reemplacé "Lo que sea" con el nombre de mi aplicación.

+0

Ver Sebastián de Martínez a continuación. Mantiene el complemento oficial, que ahora se encuentra en una nueva ubicación (https://github.com/smartinez87/exception_notification). Funciona sin problemas en Rails 3. – gtd

Respuesta

4

Parece que Rails 3 no puede usar este complemento en forma de gema. ¿Tal vez las aplicaciones de rack no se pueden cargar desde gemas? He instalado como un plugin en su lugar y ha cambiado la sintaxis de configuración para:

config.middleware.use ":: ExceptionNotifier"

en lugar de

config.middleware.use ExceptionNotifier

+0

¿Podría proporcionar el archivo de configuración completo? Estoy teniendo el mismo problema ... – Lichtamberg

2

Tardó un poco de trabajo pero me dio Excepción notificador de trabajar con Rails 3.0.0:

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

(Si yo u no quieren usar este tenedor, solo se aplica a his patch manualmente el plugin rieles originales: es sólo 3 líneas) Se fija el 'error método controller_name definido'

2- En application.rb:.

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

3- Aplicar Lawrence Pit's patch. (ACTUALIZACIÓN: Este enlace parece estar roto) Corrige el error uninitialized constant ActiveRecord::RecordNotFound como se documentó here.

Eso es todo.

3

En realidad, ahora, es mucho más fácil. En su Gemfile que necesita para escribir:

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

Y todo debe ser arreglado. La opción :require es crucial (supongo que debido a que los nombres difieren debe especificarlos explícitamente). Todos los demás parches mencionados anteriormente se han fusionado, supongo.

+1

¿Has probado eso? No funciona para mi? – Lichtamberg

+0

Sí definitivamente. Utilizo la línea anterior en mi Gemfile, y en mi application.rb tengo el 'config.middleware.use ...' y eso es todo lo que necesitaba hacer. ¿Aún tiene el error constante no inicializado? – nathanvda

+0

La parte ': git' también es crucial. La última gema publicada (2.3.3.0 en este momento) no funciona con Rails 3. –

13

está mal, es trabajar ahora para mí:

# 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]} 
3

yo era capaz de conseguir que funcione con el siguiente en production.rb:

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

que tenía el mismo problema en este momento y resuelto de esta manera:

Gemfile

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

aplicación.rb

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

Estoy refactorización un proyecto Rails 2.3 a 3,0, por lo que no he probado esto en una instalación nueva.

Editar:

que en realidad podría ser mejor (o "más correcto") para poner la inicialización ExceptionNotifier en un fichero de inicialización separada en config/inicializadores/en lugar de application.rb.

config/inicializadores/exception_notifier.rb

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

Todas las respuestas anteriores son obsoletas, ahora se puede simplemente añadir esto a su Gemfile:

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

y editar el archivo de configuración como production.rb indicado en el archivo Léame:

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

Creo que esto es una bifurcación del proyecto principal, puedes usar gem 'exception_notification',: require => 'exception_notifier' –

+3

Braden's right - 'gem 'exception_notification',: require => 'exception_notifier'' funciona ahora –

+0

gracias. Eso ayudo. –

1

Estoy usando rails 3.0.4 y tenía el mismo paquete e como arriba. La única solución que funcionó para mí fue la instalación de la versión 1.2 del exception_notification para los carriles 3 (asegúrese de usar la correcta rama/versión) como un plugin

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

y uso en todo el mundo el código production.rb menciona:

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

definitivamente no funcionó para mí como una joya y el readme hace decir "Excepción notificador Plugin para rieles" y no menciona nada acerca de la instalación como joya.

Harry

2

El uso de rieles 3.0.3 esto funciona para mí:

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

: git parte ha sido importada porque es una versión parcheada de moverse por el 'error de método controller_name indefinido' y: requieren a requiere la lib derecha.

Luego, en mi archivo de entorno production.rb sólo tengo este (del manual)

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

parece que hay muchas maneras diferentes de conseguir que esto funcione, pero esta fue mi manera.

¡Salud!

4

el repositorio oficial en GitHub es ahora: https://github.com/smartinez87/exception_notification

En el Gemfile

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

En config \ inicializadores \ exception_notification.rb

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

https://github.com/smartinez87/exception_notification

Esta joya ha sido actualizado para los carriles 3.x y yo sólo probado en 3.0.7 y la instalación es mucho más sencilla.

Gemfile:

gem 'exception_notification' 

inicializador:

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

Inicializador? ¿Qué archivo/dónde es esto? – sscirrus

+1

@sscirrus Simplemente crea un archivo con el nombre que quieras en config/initializers/ – gtd

10

que sea sencillo tonta

En Gemfile

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

En archivo application.rb

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

su se hacen ..: *

+0

Claro, pero esto capta todas las excepciones. No rendirá nada. – PabloJimeno

3

Si usted está haciendo un rescue_from Exception, with: :render_500 de manejar que muestra una plantilla de 500/página ya no se envía un correo electrónico con sólo esta

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

Usted tendrá que enviar manualmente en el método que controla la excepción

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 

Así que ponga las cosas de configuración en su entorno (production.rb) y el código de manejo de excepciones en su controlador de aplicación.

2

hasta ahora (2012-ago-03) el sitio oficial es: https://github.com/smartinez87/exception_notification, y según el README, es compatible con Rails3 perfectamente.

step1. edite su Gemfile:

gem 'exception_notification' 

step2.

A partir de los carriles 3 ExceptionNotification se utiliza como un middleware bastidor, por lo se pueden configurar sus opciones en el archivo de config.ru, o en el entorno que desea que se ejecute. En la mayoría de los casos, querrá que ExceptionNotification se ejecute en producción. Puede hacer que funcione por

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

He copiado y pegado la configuración exception_notification de aplicación de edad a uno nuevo y falló. Me trajo aquí y ninguna de las respuestas anteriores estaba actualizada. Desde la versión 4.x el middleware se renombró a ExceptionNotification::Rack, de configuración de modo de middleware que se parece a:

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

RESPUESTA actualizan en la medida de 3/14 ...

Solo necesita hacer gem exception_notification en su archivo gem. No es necesario 'requerir'.

Además, otros cambios sólo directamente de los documentos ...

"Desde la versión 4.x la sintaxis de configuración ha cambiado Todas las opciones relacionadas con el correo electrónico debe ser anidan debajo de la tecla: e-mail".

así ... comentario

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