Rails 3.1 Активы в процессе производства снимаются, но HTML не - PullRequest
3 голосов
/ 14 сентября 2011

Все отлично работает в разработке.И приложение разворачивается как обычно с Capistrano.Активы (javascript & css), кажется, полностью предварительно скомпилированы, и каждому, наряду с изображениями, присваивается «отпечаток пальца».Проблема в том, что при использовании image_tag("image-name.png"), на мой взгляд, HTML, который он создает в рабочей среде, не содержит «отпечатков пальцев».

Рендеринг HTML, который мы получаем в производстве:

<img alt="Image-name" src="/assets/image-name.png" />

вместо того, что я ожидал, должен быть:

<img alt="Image-name" src="/assets/image-name-b89cae2830c2901f844c353b3f3942fe.png" />

Итак, какой из RailsМногочисленные опции конфигурации 3.1 мы испортили?

Редактировать

Похоже, проблемные изображения включены в сторонний Colorbox инструмент для просмотра изображений, который мы используем.Rails 3.1 производит дактилоскопию своих активов (border.png и т. Д.), Но, очевидно, что исходный код этой библиотеки javascript не использует хелперы, такие как image_tag.Так что в производстве он все еще ищет изображения с именем /assets/colorbox/border.png.В настоящее время изображения находятся в / vendor / assets / images и отлично работают в разработке. Есть ли способ предотвратить "отпечатки пальцев" только на этих изображениях?

1 Ответ

1 голос
/ 14 сентября 2011

Итак, вот как я взломал сторонние файлы, чтобы заставить их работать:

Образы, которые нарушали работу, были в файлах типа vendor/assets/stylesheets/colorbox.css.Сначала я изменил расширение файлов на .scss, затем я изменил каждый url(colorbox/image.png) на image_url("color box/image.png"), и теперь все очень красиво.Активы обычно обслуживаются в процессе разработки и снимаются в процессе производства.

Тем не менее хотелось бы увидеть «правильный» способ добавления сторонних (вендорных) библиотек javascript & css в приложение Rails 3.1.У команды Rails должно быть готовое решение, которое не требует редактирования?!?Поэтому, пожалуйста, не стесняйтесь предлагать другие решения.


В стороне: , где я ранее вручную настроил свой рецепт Capistrano с помощью:

run "cd #{release_path}; RAILS_ENV=production bundle exec rake assets:precompile"

…и сопровождающие его after deploy:update_code ….Теперь я удалил эти строки и вместо этого добавил load 'deploy/assets к своему Capfile.Я не думаю, что это имеет какое-либо значение в вышеуказанной проблеме, но я все равно хотел это задокументировать, так как добавление собственного рецепта прекомпиляции конвейера больше не требуется в Capistrano 2.8, как это было в дни 3.1rc.

...