Конвейер ресурсов Rails 3.1: другие ресурсы на Amazon S3 требуют предварительной компиляции? - PullRequest
3 голосов
/ 24 февраля 2012

Итак, у нас есть сайт 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? Мы бы очень хотели иметь возможность использовать этих хороших помощников.

1 Ответ

4 голосов
/ 24 февраля 2012

Таким образом, из комментариев видно, что URL-адреса изображений в вашей базе данных имели пробел в качестве первого символа, который заставил image_tag искать ресурс вместо прямой ссылки на URL.

...