it-swarm.com.ru

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. Я заменил «Независимо от» с моим именем приложения.

41
Darren Hinderer

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

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

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

21
Sebastian Martinez

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

# 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]}
13
BvuRVKyUVlViVIc7

Держи это просто глупо</ I>

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

Вы сделали ..: *

10
Saqib R.

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

config.middleware.use ":: ExceptionNotifier"

вместо

config.middleware.use ExceptionNotifier

4
Darren Hinderer

Официальный репозиторий на 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]}  
4
dave elkins

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

3
Stone

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

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

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

3
nathanvda

https://github.com/smartinez87/exception_notification

Этот драгоценный камень был обновлен для Rails 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]}
3
Brian Samson

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

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

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

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

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

2- В приложении .rb: 

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

3- Применить патч Лоуренса Пит . (UPDATE: Эта ссылка, похоже, не работает) Исправляет ошибку uninitialized constant ActiveRecord::RecordNotFound, как описано в документах здесь .

Вот и все.

2
Ryan Horrisberger

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

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

: часть git импортирована, потому что это исправленная версия для обхода «неопределенной ошибки метода имя_контроллера» и: требуется требовать правильную библиотеку. 

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

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

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

Ура! 

2
Mathias Stjernstrom

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

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/initializer/вместо 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]}
2
Fredrik Boström

до сих пор (2012-август-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]}
2
Siwei Shen 申思维

ОБНОВЛЕННЫЙ ОТВЕТ на 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]}
  }
1
bwest87

Я использую Rails 3.0.4 и имел ту же проблему, что и выше. Единственное решение, которое мне помогло, - это установить v1.2 в уведомлении об исключении для 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 написано «Плагин оповещения об исключениях для Rails» и ничего не говорится об установке его как гема.

Гарри

1
harryhorn

Я скопировал и вставил конфигурацию 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]}
 }
0
Casual Coder