Очевидно, rescue_from
должен перехватывать исключения, но это не работает должным образом:
class ApplicationController < ActionController::Base
rescue_from ActionController::RoutingError, with: :not_found
def not_found
text: 'Not found'
end
end
Spe c:
specify 'Not found' do
visit '/zzz'
expect(page.status_code).to eq 200
end
Failure/Error: visit '/zzz'
ActionController::RoutingError:
No route matches [GET] "/zzz"
То же поведение в среда разработки.
Однако исправление других ошибок, таких как RuntimeError
, работает должным образом.
Документы: https://apidock.com/rails/v6.0.0/ActiveSupport/Rescuable/ClassMethods/rescue_from
Rails 6.0. 2
Почему RoutingError
нельзя использовать с rescue_from
? RoutingError вызывается в промежуточном программном обеспечении или маршрутизатором до вызова контроллера? Есть ли другой способ поймать RoutingError
?