Rails: как регистрировать все исключения, возникающие в задачах rake - PullRequest
1 голос
/ 21 июня 2020

Используя собственный ErrorLogger, который я написал, я пытаюсь найти способ регистрировать все ошибки, происходящие в любой из моих задач с граблями. Другой альтернативой было бы просто добавить блок begin-rescue к каждому отдельному файлу * .rake:

# lib/tasks/example.rake
require 'error_logger/error_logger'

namespace :example do
  task generic_example: :environment do
    begin
      ...task code here
    rescue Exception => e
      ErrorLogger.log(e)
      raise e
    end
  end
end

Но делать это для всех файлов задач не очень DRY, поэтому мне интересно, есть ли это более разумный способ. *

Как лучше всего сделать что-то подобное в задачах rake, записав лог c только один раз и применив его ко всем задачам rake? Может быть, есть какой-то код, который я мог бы добавить в Rakefile для этого?

1 Ответ

0 голосов
/ 21 июня 2020

Эту задачу можно выполнить, починив грабли обезьяны, как показано ниже

module Rake
  class Task
    alias_method :invoke_without_loggable, :invoke

    def invoke(*args)
      begin
        invoke_without_loggable(*args)
      rescue StandardError => e
        ErrorLogger.log(e)
        raise e
      end
    end
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...