Я закончил с использованием rescue_from
в ApplicationController
, зарегистрировав сообщение об исключении и обратный след, а затем с помощью params[:controller]
и params[:action]
, чтобы определить, на какой контроллер / действие перенаправить.
Например, если исключено PostsController#show
исключение, я бы перенаправил на PostsController#index
с в rescue_from
.До сих пор он работал , так что не кажется плохой вещью для redirect_to
изнутри rescue_from
.Время даст мне знать, я уверен!(Просто нужно убедиться, что мои перенаправления не вызывают бесконечные циклы!)
И просто кто-то заинтересован в этом взломать (попробуйте на свой страх и риск!):
class ApplicationController < ActionController::Base
def determine_redirect_to_path(controller,action)
...
end
rescue_from StandardError do |exception|
backtrace_size = exception.backtrace.size
if backtrace_size >= 2 then max_range = 2
elsif backtrace_size >= 1 then max_range = 1
end
if max_range > 0
s = "rescued_from:: #{params[:controller]}##{params[:action]}: #{exception.inspect}\n#{exception.backtrace[0..max_range].to_s}\n"
logger.error s
end
redirect_to determine_redirect_to_path(params[:controller],params[:action])
end
end