Рубин на рельсах 3 вопроса - PullRequest
0 голосов
/ 15 июля 2010

Может кто-нибудь объяснить код в catch_exceptions?

Мне трудно понять.

спасибо

class ApplicationController < ActionController::Base
  around_filter :catch_exceptions

  private

  def catch_exceptions
    yield
  rescue => exception
    logger.debug "Caught exception! #{exception}"
    raise
  end
end

Ответы [ 2 ]

4 голосов
/ 15 июля 2010

Простой.

Сначала вам нужно понять концепцию фильтра_станов.Это помещает что-то вокруг вызова метода.Также вам необходимо понимать YIELD, то есть выполнение блока.

, поэтому, если у вас есть что-то вроде действия Index.

def index
  # run code run
end

, это означает, что оно будет отправлено как блок в этот_фильтр.который выполнит это так, как если бы это было ...

  def catch_exceptions
    def index
      #run code run
    end
  rescue => exception
    logger.debug "Caught exception! #{exception}"
    raise
  end
1 голос
/ 15 июля 2010

catch_exceptions - это метод, который принимает блок. Вы можете сказать, потому что он содержит выход (который выполняет переданный в блоке).

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

Строка 'around_filter' заставляет рельсы передавать каждый метод контроллера, который будет выполняться вместо метода catch_exceptions.

Общий результат состоит в том, что все исключения, сгенерированные методами контроллера, регистрируются.

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