41

Я пытаюсь запустить его, но я вижу «неинициализированный постоянный ExceptionNotifier» всякий раз, когда я запускаю свой сервер.Уведомление об исключении Gem и Rails 3

http://github.com/rails/exception_notification

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

гема "exception_notification",: мерзавец => "http://github.com/rails/exception_notification.git",: филиал => "мастер"

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

+0

знакомства Себастьяна Мартинеса ниже. Он поддерживает официальный плагин, который теперь находится в новом месте (https://github.com/smartinez87/exception_notification). Он работает безупречно в Rails 3. – gtd

ответ

4

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

config.middleware.use ":: ExceptionNotifier"

вместо

config.middleware.use ExceptionNotifier

+0

Не могли бы вы предоставить весь конфигурационный файл? У меня такая же проблема ... – Lichtamberg

2

Он принял немного работы, но я получил исключение Notifier работает с Rails 3.0.0:

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

(Если йо у не хотите использовать эту вилку, просто применить his patch вручную оригинального плагина Rails: это только 3 линии) Оно фиксирует «Неизвестная ошибка метода controller_name»

2- В application.rb:.

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

3- Применить Lawrence Pit's patch. (UPDATE: Ссылка была удалена) Ошибка при регистрации uninitialized constant ActiveRecord::RecordNotFound как задокументировано here.

Все.

3

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

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

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

+1

Вы попробовали? Это не работает для меня? – Lichtamberg

+0

Да, конечно. Я использую указанную выше строку в своем Gemfile, а в моем приложении.rb у меня есть 'config.middleware.use ...', и это все, что мне нужно было сделать. У вас все еще есть неинициализированная постоянная ошибка? – nathanvda

+0

Часть ': git' также имеет решающее значение. Последний опубликованный gem (2.3.3.0 прямо сейчас) не работает с Rails 3. –

13

Ok, его работы сейчас для меня:

# 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

Я был в состоянии заставить его работать со следующим в 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

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

Gemfile

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

приложение.Р.Б.

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

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

Edit:

Это может быть на самом деле лучше (или «более правильный»), чтобы поместить инициализацию ExceptionNotifier в отдельном файле инициализации в конфигурации/инициализаторов/вместо 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]} 
57

Все предыдущие ответы устарели, теперь вы можете просто добавить к вашей 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]} 
+7

Я думаю, что это вилка основного проекта, вы можете просто использовать gem 'exception_notification',: require => 'exception_notifier' –

+3

Право Braden - 'gem 'exception_notification',: require => 'exception_notifier'' работает сейчас –

+0

спасибо. это помогло. –

1

Я использую рельсы 3.0.4 и имел ту же проблему, что и выше. Единственное решение, которое работало для меня было установить v1.2 в exception_notification для рельсов 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]} 

Это, безусловно, не работает для меня, как драгоценный камень и ридми действительно говорит «Exception Notifier плагин для Rails» и ничего не упоминает об установке его в качестве драгоценного камня.

Гарри

2

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

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

: мерзавец часть импортируется потому, что его исправленную версию, чтобы получить вокруг «Неизвестная ошибка метода controller_name» и: требуют требуют права lib.

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

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

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

Приветствия!

4

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

В Gemfile

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

В конфигурации \ Инициализаторы \ exception_notification.rb

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

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

Следующий выпуск драгоценных камней сделает необязательным вариант :require => 'exception_notifier'.

3

https://github.com/smartinez87/exception_notification

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

Gemfile:

gem 'exception_notification' 

Initializer:

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

Инициализатор? Какой файл/где это? – sscirrus

+1

@sscirrus Просто создайте файл с именем, который вы хотите в config/initializers/ – gtd

10

Держите его просто глупо

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

Ваш совершающихся ..: *

+0

Конечно, но это ловит все исключения. Это ничего не даст. – PabloJimeno

3

Если вы делаете 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) и код обработки исключений в вашем прикладном контроллере.

2

до настоящего времени (2012-Aug-03) официальный сайт: 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]} 
0

Я скопировал и вставил 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]} 
} 
1

ОБНОВЛЕНО ANSWER по состоянию на 3/14 ...

Вам просто нужно сделать gem exception_notification в вашем файле gem. Нет необходимости.

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

«По состоянию на 4.x версии синтаксис конфигурации изменился Все связанные параметры электронной почты должны быть вложены под ключ: по электронной почте.»

как так ... комментарий

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