Итак, у нас есть сайт Rails 3.1 (.1) с ресурсами в нескольких разных местах, и Rails (по некоторым причинам) ожидает, что эти изображения, размещенные на Amazon S3, будут предварительно скомпилированы . Специфичные для сайта (таблицы стилей, небольшие изображения макетов и т. Д.) Являются локальными, они успешно прекомпилируются в рабочей среде и сохраняются в public/assets
, как и должны. Они подаются через Apache просто отлично .
У нас есть изображения, URL-адреса которых хранятся в базе данных и указывают на изображения, размещенные на CDN, и эти URL-адреса не имеют расширения файла; вместо этого у них есть MD5. Они http://path-to-cdn.com/<BIG-'OLE-MD5-HASH>
. Они обслуживаются нашими представлениями с помощью Rails 'image_tag
helper просто отлично , они появляются в производстве, они не втягиваются в наш бизнес перед компиляцией (потому что они динамические, на самом деле, на основе страницы товара на нашем сайте).
Что не хорошо, так это третий набор активов; они хранятся в Amazon S3 с именем хоста , аналогичным тому, где наш сайт обслуживается в производственном режиме (сайт, скажем, store.hostname.com
, а активы - images.hostname.com.s3.amazonaws.com
). Когда мы заходим на страницу с одним из этих изображений (а эти изображения do имеют какое-то расширение; .jpg | .png | .gif
и т. Д.), Мы получаем ошибку 500
, и об этом выдается ошибка Sprockets. URL изображения не прекомпилируется.
Я видел несколько решений, в которых люди подают Proc
на config.action_controller.asset_host
, но я не уверен, что это относится к моей ситуации. Кажется, я не могу найти ответ на свое решение.
Есть ли способ - кроме записи URL-адреса на странице в необработанный HTML-тег изображения (<img src=""/>
) вместо Rails image_tag
? Мы бы очень хотели иметь возможность использовать этих хороших помощников.