Gem уведомления об исключении и Rails 3

Я пытаюсь запустить его, но при каждом запуске сервера вижу «неинициализированную константу ExceptionNotifier».

http://github.com/rails/exception_notification

В моем Gemfile у меня есть

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

Я попытался поместить конфигурацию, как показано в readme github, внутри config / application.rb, config / environment.rb и config.ru. Я заменил «Что угодно» на имя своего приложения.


person Darren Hinderer    schedule 19.08.2010    source источник
comment
См. Комментарий Себастьяна Мартинеса ниже. Он поддерживает официальный плагин, который теперь находится в новом месте (github.com/smartinez87/exception_notification) . Он безупречно работает в Rails 3.   -  person gtd    schedule 11.11.2011


Ответы (17)


Все предыдущие ответы устарели, теперь вы можете просто добавить это в свой гем-файл:

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

И отредактируйте файл конфигурации production.rb, как указано в файле readme:

config.middleware.use ExceptionNotifier,
  :email_prefix => "[Exception] ",
  :sender_address => %{"Exception Notifier" <[email protected]>},
  :exception_recipients => %w{[email protected]}
person Jan M    schedule 27.01.2011
comment
Я думаю, что это форк основного проекта, вы можете просто использовать gem 'exception_notification',: require = ›'exception_notifier' - person Braden Becker; 14.03.2011
comment
Брейден прав - gem 'exception_notification', :require => 'exception_notifier' сейчас работает - person William Denniss; 01.04.2011

Последняя версия официального гема работает с Rails 3, вы можете найти его здесь: https://github.com/smartinez87/exception_notification.

В следующем выпуске гема опция :require => 'exception_notifier' станет ненужной.

person Sebastian Martinez    schedule 06.04.2011

Хорошо, теперь он работает для меня:

# 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]}
person BvuRVKyUVlViVIc7    schedule 25.09.2010

Делайте это просто глупо

В gemfile

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

В файле application.rb

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

Готово ..: *

person Saqib R.    schedule 07.09.2011
comment
Конечно, но здесь учитываются все исключения. Он ничего не отобразит. - person PabloJimeno; 24.07.2013

Кажется, что Rails 3 не может использовать этот плагин в форме драгоценного камня. Может, стоечные приложения не загружаются из гемов? Вместо этого я установил его как плагин и изменил синтаксис конфигурации на:

config.middleware.use ":: ExceptionNotifier"

вместо того

config.middleware.use ExceptionNotifier

person Darren Hinderer    schedule 19.08.2010

Официальное репо на github сейчас: https://github.com/smartinez87/exception_notification

В Gemfile

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

В config \ initializers \ exception_notification.rb

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

Собственно, сейчас это намного проще. В вашем Gemfile нужно написать:

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

И все должно быть исправлено. Параметр :require имеет решающее значение (я думаю, потому что имена различаются, вы должны указать явно). Полагаю, все остальные патчи, упомянутые ранее, были объединены.

person nathanvda    schedule 14.09.2010
comment
Да, безусловно. Я использую указанную выше строку в моем Gemfile, а в моем application.rb у меня есть config.middleware.use ..., и это все, что мне нужно было сделать. У вас все еще есть ошибка неинициализированной константы? - person nathanvda; 25.09.2010
comment
Часть :git также важна. Последний опубликованный гем (сейчас 2.3.3.0) не работает с Rails 3. - person Steve Madsen; 14.10.2010

Мне удалось заставить его работать со следующим в production.rb:

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

https://github.com/smartinez87/exception_notification

Этот гем был обновлен для rails 3.x, и я только что протестировал на 3.0.7, установка намного проще.

Gemfile:

gem 'exception_notification'

Инициализатор:

Rails.application.config.middleware.use ExceptionNotifier,
  :email_prefix => "[Whatever] ",
  :sender_address => %{"notifier" <[email protected]>},
  :exception_recipients => %w{[email protected]}
person Brian Samson    schedule 28.06.2011
comment
Инициализатор? Какой файл / где это? - person sscirrus; 16.09.2011
comment
@sscirrus Просто создайте файл с любым именем в config / initializers / - person gtd; 11.11.2011

Если вы делаете rescue_from Exception, with: :render_500 для отображения шаблона 500 / страницы, он больше не отправляет электронное письмо только с этим

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

Вам нужно будет вручную отправить его в метод, обрабатывающий исключение.

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 

Так что поместите конфигурационный материал в свою среду (production.rb) и код обработки исключений в свой контроллер приложения.

person Stone    schedule 13.05.2012

Только что у меня была такая же проблема, и я решил ее следующим образом:

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

Я выполняю рефакторинг проекта Rails 2.3 до версии 3.0, поэтому я не пробовал это при новой установке.

Изменить:

На самом деле может быть лучше (или «правильнее») поместить инициализацию ExceptionNotifier в отдельный файл инициализатора в config / initializers / вместо application.rb.

конфигурация / инициализаторы / исключение_notifier.rb

MyApp::Application.config.middleware.use ExceptionNotifier,
  :email_prefix => "[some prefix] ",
  :sender_address => %{"Notifier" <[email protected]>},
  :exception_recipients => %w{[email protected]}
person Fredrik Boström    schedule 10.12.2010

Используя Rails 3.0.3, это работает для меня:

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

Часть: git импортируется, потому что это исправленная версия, позволяющая обойти ошибку undefined method controller_name и: require требовать правильную библиотеку.

Тогда в моем файле среды production.rb у меня есть только это (из руководства)

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

Похоже, есть много разных способов заставить это работать, но это был мой путь.

Ваше здоровье!

person Mathias Stjernstrom    schedule 05.03.2011

Потребовалось немного поработать, но я получил Exception Notifier, работающий с Rails 3.0.0:

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

(Если вы не хотите использовать эту вилку, просто примените его патч вручную в исходный плагин Rails: это всего 3 строки.) Он исправляет 'неопределенную ошибку имя_контроллера метода'

2- В application.rb:

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

3- Примените патч Лоуренса Пита. (ОБНОВЛЕНИЕ: эта ссылка кажется неработающей) Исправлена ​​ошибка uninitialized constant ActiveRecord::RecordNotFound, как описано в здесь.

Вот и все.

person Ryan Horrisberger    schedule 02.09.2010

до настоящего времени (3 августа 2012 г.) официальный сайт: https://github.com/smartinez87/exception_notification, и, согласно README, он отлично поддерживает Rails3.

шаг 1. отредактируйте свой Gemfile:

gem 'exception_notification'

шаг 2.

Начиная с Rails 3 ExceptionNotification используется в качестве промежуточного программного обеспечения стойки, поэтому вы можете настроить его параметры в файле config.ru или в среде, в которой вы хотите его запускать. В большинстве случаев вам нужно, чтобы ExceptionNotification запускался в производственной среде. Вы можете заставить это работать

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

Я использую рельсы 3.0.4, и у меня была та же проблема, что и выше. Единственное решение, которое сработало для меня, заключалось в установке v1.2 исключения_notification для rails 3 (убедитесь, что вы используете правильную ветку / версию) в качестве ПЛАГИНА

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

и используйте в production.rb код, который все упоминают:

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

Это определенно не сработало для меня в качестве драгоценного камня, и в файле readme говорится «Плагин уведомления об исключениях для Rails» и ничего не упоминается об установке его как драгоценного камня.

Гарри

person harryhorn    schedule 19.02.2011

ОБНОВЛЕННЫЙ ОТВЕТ от 14.03 ...

Вам просто нужно сделать gem exception_notification в вашем гем-файле. Никакого «требования» не требуется.

Кроме того, другие изменения прямо из документации ...

«Начиная с версии 4.x синтаксис конфигурации изменился. Все параметры электронной почты ДОЛЖНЫ БЫТЬ вложены в ключ: email».

вот так...

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

Я скопировал и вставил конфигурацию exception_notification из старого приложения в новое, и это не удалось. Это привело меня сюда, и ни один из приведенных выше ответов не был актуальным. Начиная с версии 4.x промежуточное ПО было переименовано в ExceptionNotification::Rack, поэтому конфигурация промежуточного ПО выглядит так:

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