Я пытаюсь создать собственное исключение StandardError, но, похоже, я не могу активировать escape_from с повышением. Ошибка возникает, но никогда не спасается. Я создал простое приложение, чтобы попробовать это следующим образом:
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
class ApplicationController::LocationInvalid < StandardError
end
rescue_from ApplicationController::LocationInvalid, with: :reset_it
raise ApplicationController::LocationInvalid
private
def reset_it(exception)
session.clear
cookies['XSRF-TOKEN'] = form_authenticity_token if protect_against_forgery?
puts 'Reset it processed'
end
end
Когда я оборачиваю повышение в begin/rescue/end, оно печатает e как ApplicationController::LocationInvalid:
begin
raise ApplicationController::LocationInvalid
rescue => e
puts e
end
Выход:
Начат GET "/" для 127.0.0.1 в 2015-08-21 15:19:32 -0400 ApplicationController::LocationInvalid
Я пробовал различные формы указания класса ApplicationController и не без изменений в результатах...
raise ApplicationController::LocationInvalid.new
. - person CWitty   schedule 21.08.2015reset_it
еще не было оценено? Попробуйте поместитьraise
в метод, а затем вызвать этот метод из консоли или чего-то еще. - person Daiku   schedule 21.08.2015