Уведомление об исключении Gem и Rails 3
Я пытаюсь запустить это, но я вижу "uninitialized constant ExceptionNotifier" всякий раз, когда я запускаю свой сервер.
http://github.com/rails/exception_notification
В моем Gemfile у меня есть
gem "exception_notification",: git = > " http://github.com/rails/exception_notification.git",: branch = > "master"
Я попытался поместить конфигурацию, как показано в файле github readme внутри config/application.rb, config/environment.rb и config.ru. Я заменил "Независимо" от моего имени приложения.
Ответы
Ответ 1
Все предыдущие ответы устарели, теперь вы можете просто добавить это в свой gemfile:
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]}
Ответ 2
Последняя версия официального драгоценного камня работает с Rails 3, вы можете найти его здесь: https://github.com/smartinez87/exception_notification.
Следующая версия gem сделает необязательным параметр :require => 'exception_notifier'
.
Ответ 3
Хорошо, теперь он работает для меня:
# 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]}
Ответ 4
Держите его просто глупым
В 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]}
Ваши Готовые..: *
Ответ 5
Кажется, что Rails 3 не может использовать этот плагин в форме gem. Может быть, жесткие приложения не могут быть загружены из драгоценных камней? Я установил его как плагин и изменил синтаксис конфигурации на:
config.middleware.use ":: ExceptionNotifier"
вместо
config.middleware.use ExceptionNotifier
Ответ 6
Официальное репо на 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]}
Ответ 7
Собственно, теперь это намного проще. В Gemfile
вам нужно написать:
gem "exception_notification", :git => "http://github.com/rails/exception_notification.git", :require => 'exception_notifier'
И все должно быть исправлено. Опция :require
имеет решающее значение (я думаю, потому что имена различаются, вы должны явно указывать).
Все другие исправления, упомянутые ранее, были объединены, я полагаю.
Ответ 8
Мне удалось заставить его работать со следующим в production.rb:
config.after_initialize do
config.middleware.use ExceptionNotifier,
:email_prefix => "[Whatever] ",
:sender_address => %{"notifier" <[email protected]>},
:exception_recipients => %w{[email protected]}
end
Ответ 9
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]}
Ответ 10
Если вы делаете 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 a 500 in production mode
if Rails.env.production?
ExceptionNotifier::Notifier.exception_notification(request.env, exception).deliver
end
end
Итак, поместите файл конфигурации в вашу среду (production.rb) и код обработки исключений в ваш контроллер приложений.
Ответ 11
Потребовалось немного работы, но я получил Exception Notifier, работающий с Rails 3.0.0:
1- rails plugin install http://github.com/sickill/exception_notification.git
(Если вы не хотите использовать эту вилку, просто примените его патч вручную к исходному плагину Rails: это всего лишь 3 строки.) Он исправляет "undefined метод имя_контроллера_имя ошибки"
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
, как описано здесь.
Что это.
Ответ 12
У меня была такая же проблема только сейчас и разрешила ее так:
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.
конфигурации/Инициализаторы/exception_notifier.rb
MyApp::Application.config.middleware.use ExceptionNotifier,
:email_prefix => "[some prefix] ",
:sender_address => %{"Notifier" <[email protected]>},
:exception_recipients => %w{[email protected]}
Ответ 13
Используя Rails 3.0.3, это работает для меня:
gem "exception_notification", :git => "https://github.com/sickill/exception_notification.git", :require => 'exception_notifier'
: git часть импортируется, потому что ее исправленная версия обходится с методом undefined имя_контроллера_имя_имя_имя_имя_имя_имя_требования: требуется требовать права lib.
Тогда в моем файле production.rb environment у меня есть только это (из руководства)
config.middleware.use ExceptionNotifier,
:email_prefix => "[MyApp] ",
:sender_address => %{"notifier" <[email protected]>},
:exception_recipients => %w{[email protected]}
Похоже, есть много разных способов заставить это работать, но это было моим путем.
Ура!
Ответ 14
до сих пор (2012-авг-03) официальный сайт: https://github.com/smartinez87/exception_notification, и в соответствии с README он отлично поддерживает Rails3.
step1. отредактируйте свой Gemfile:
gem 'exception_notification'
step2.
В 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]}
Ответ 15
Я использую rails 3.0.4 и имел ту же проблему, что и выше. Единственным решением, которое сработало для меня, было установить v1.2 исключения_notification для rails 3 (убедитесь, что вы используете правильную ветвь/версию) как PLUGIN
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 говорит "Исключатель Notification Plugin для Rails" и ничего не говорит об установке его в качестве драгоценного камня.
Гарри
Ответ 16
ОБНОВЛЕННЫЙ ОТВЕТ ПО 3/14...
Вам просто нужно сделать gem exception_notification
в вашем файле gem. Нет необходимости.
Кроме того, другие изменения прямо из документов...
"Начиная с версии 4.x синтаксис конфигурации изменился.
Все параметры, связанные с электронной почтой, ДОЛЖНЫ быть вставлены под ключ: email. "
вот так...
Whatever::Application.config.middleware.use ExceptionNotification::Rack,
:email => {
:email_prefix => "[Whatever] ",
:sender_address => %{"notifier" <[email protected]>},
:exception_recipients => %w{[email protected]}
}
Ответ 17
Я скопировал и вставил конфигурацию 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]}
}