Уведомление об исключениях Rails в задачах rake

У меня есть простое приложение rails с несколькими контроллерами и некоторыми задачами rake. Пара задач выполняется cron, сконфигурированным с всякий раз, когда gem .

Одна из моих задач выполняется ежедневно и иногда вызывает исключение, и по умолчанию я получаю это предупреждение от cron

rake aborted!
undefined method `parameterize' for nil:NilClass

Tasks: TOP => mailboxes:clean_processed
(See full trace by running task with --trace)

Я хочу, чтобы отлаживайте, что происходит, и по этой причине я только что установил этот гем уведомления об исключении с этой строкой в ​​моем Gemfile

gem "exception_notification", "~> 2.4.1", :require => 'exception_notifier'

и настроил его в моем файле application.rb с

# enable exception notification
config.middleware.use ExceptionNotifier,
                      :email_prefix => "[MyAppName] ",
                      :sender_address => %{"notifier" },
                      :exception_recipients => %w{me@example.com}

Поскольку этот гем является промежуточным программным обеспечением для стойки, он работает только для веб-запросов, но не для задач rake. Я хотел бы включить его также для задач с граблями, и я нашел эту суть , которая выполняет эту работу.

Он работает, но не СУХОЙ, мне нужно повторить настройку драгоценного камня в этом методе, и я также мне нужно изменить все мои задачи с граблями, чтобы заключить их операторы в блок, как в

exception_notify { actual_task_code }

Есть ли лучший способ решить эту проблему?

PS Если мне нужно изменить гем уведомления, это не проблема, потому что я добавил в свой проект всего несколько строк кода.

P.P.S. Я знаю, что могу также изменить строку rake в crontab, чтобы добавить параметр - trace , но мне не нравится это решение, потому что уведомление об исключении imho - лучшее решение, которое помогает также в веб-коде .

Обновление Я только что выяснил этот связанный вопрос: exception_notification for delayed_job , но в обоих ответах используется похожий трюк.

Я собираюсь попробовать с онлайн-сервисом, таким как Airbrake ( ранее известное как hoptoad) или Exceptional, но оба они платные ...

Обновление 2 : Я пробовал Airbrake App , очень хорошее приложение, но оно страдает той же проблемой Мне все еще нужно взломать Rakefile, чтобы уведомлять об исключениях из задач rake. Однако этот метод менее сухой, потому что вам просто нужен этот код:

# notify exceptions
def exception_notify
  yield
rescue Exception => exception
  HoptoadNotifier.notify exception
  raise exception
end

Нет необходимости повторять какие-либо параметры конфигурации. Я думаю, что не могу лучше этого сделать, чтобы получать уведомления об исключениях в задачах с граблями.

15
задан Community 23 May 2017 в 11:53
поделиться