Как в Rails ловить ActionController::RoutingError при отдаче изображений на девелопменте?

Есть апликация, в которой постоянно очищаются старые изображения. При выводе айтемов с удаленным изображениями - выскакивают ActionController::RoutingError, которые трудно отлавливать при тестировании.
Как в Rails ловить ActionController::RoutingError при отдаче изображений и вместо отсутствующих изображений отдавать деффолтное?

Сами исключения происходят при тестах, при этом, их очень трудно отлавливать простым перехватом исключений. Используется Rspec и Capybara.
  • Вопрос задан
  • 264 просмотра
Пригласить эксперта
Ответы на вопрос 1
Из рельс в общем-то никак, т.к. изображения на продакшене должны отдаваться nginx'ом. У рельс есть настройка для продакшена, насильно отключающая отдачу статики
# Disable Rails's static asset server (Apache or nginx will already do this)
config.serve_static_files = false

Если вы всё же по каким-то соображениям отдаёте статику рельсами, что категорически неверно, то в ApplicationController можно сделать перехватчик эксепшена
rescue_from ActionController::RoutingError, with: :routing_error

и в нём проверять, урл картинки это или нет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы