J'ai un projet Rails 3.1 dont le pipeline de ressources fonctionne parfaitement. Le problème est que je dois référencer des images dans mon Sass, mais Rails calcule les URL des images. (Ceci est particulièrement important en production, où Rails ajoute le hash Git de l'image à son nom de fichier pour casser les caches).
Par exemple, dans app/assets/stylesheets/todos.css.scss
:
.button.checkable { background-image: url(/assets/tick.png); }
Lorsque je déploie (ou exécute rake assets:precompile
), le fichier app/assets/images/tick.png
est déplacé vers public/assets/tick-48fe85c0a.png
ou quelque chose de similaire. Cela casse le CSS. Ce poste fait deux suggestions :
- n'utilisez pas le pipeline d'actifs pour les images -- mettez-les plutôt dans
public/images/
et les référencer directement - utilisez ERB pour votre CSS et laissez Rails se charger de l'URL de l'image.
Le numéro 1 est certainement une possibilité, bien que cela signifie que je n'obtienne pas de cache-busting sur mes images. Le point 2 est exclu car j'utilise Sass, et non ERB, pour traiter les fichiers.