Подтвердить что ты не робот

Уведомление об исключении 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. Я заменил "Независимо" от моего имени приложения.

4b9b3361

Ответ 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]}
 }