Спасите 403 запрещенных изображения в представлениях от S3 - PullRequest
0 голосов
/ 18 января 2019

Я хочу спасать каждые 403 ответа от S3 в моем приложении.Они в основном в тегах изображений, ломая изображение в представлении.Как я могу сделать это в ApplicationController, когда теги изображений не вызывают исключений, они просто имеют поврежденные изображения в представлении?

rescue_from ??? do |e|
  logger.debug "broken image: #{e}"
end

Некоторые изображения отображаются в виде помощника, например:

def user_image(img_style)
 "<img src='#{asset.image(img_style)}' />"
end

Где asset.image(img_style) возвращает URL-адрес (в данном случае запрещенный).

Другие такие же, как:

<%= image_tag document.other_asset.image(:small) %>

Нет ни одного родительского контроллера (сохранить ApplicationControllerЯ думаю.

Однако существует один полиморфный класс (ImageAttachment), в котором хранится изображение.Должен ли я забрать его в модели заранее и вызвать ошибку?Разве это не связано с выполнением запроса дважды?

1 Ответ

0 голосов
/ 18 января 2019

Это решение абсолютно ужасно и удваивает количество запросов на изображение, но для завершения:

def found?(style = :small)
  return true if URI.open(image(style))
rescue OpenURI::HTTPError => exception
  logger.debug exception.message
  false
end

Очевидно, что лучшая реализация в Javascript, поэтому ресурсы не нужно загружать дважды, но, поскольку вопрос начинался с Ruby, он тоже на этом закончится.

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