Rails 3.1 资产管道和缓存
Posted
技术标签:
【中文标题】Rails 3.1 资产管道和缓存【英文标题】:Rails 3.1 Asset Pipeline and Caching 【发布时间】:2011-10-04 17:51:26 【问题描述】:我正在使用 Rails 3.1 的资产管道,虽然它似乎在我的本地主机上的开发环境中完美运行,但我在引擎场上遇到了很大的问题。
这是我的基本问题。
当我在我的一个 scss 文件中包含背景图像时:
a
color: #3c7f8b;
font-weight: bold;
padding-left: 35px;
font-size: 13px;
display: block;
background: white url(shade.png) top right;
&:hover
color: #222222;
background: white url(shade2.png) top right;
&.on
color: #222222;
background: white url(shade2.png) top right;
我遇到了以下问题:即使我已经预编译了我的资产,浏览器仍然请求 /assets/shade.png
而不是 /assets/shade-FINGERPRINT.png
,这是实际存在的文件。
有人知道我可以通过在我的 .scss 文件中的资产文件夹中引用图像来解决这个问题吗?
【问题讨论】:
一些关于资产管道的文档处于测试阶段,其中有一些好东西 - ryanbigg.com/guides/asset_pipeline.html 事实证明这实际上是我的部署策略而不是实际资产管道的问题。 @TheDelChop,您能否将问题的详细信息与您的部署策略一起发布? 【参考方案1】:在这篇文章中查看“tybro0103”的答案 - Rails 3.1 and Image Assets
基本上把文件从scss改成scss.erb然后使用asset_path辅助方法
部署前预编译
免责声明:我自己没有尝试过
【讨论】:
【参考方案2】:在 Rails 3.1 中使用 scss 时,您应该使用 image-url 而不是 url 来引用图像。
另外,请确保在 sass-rails 之前加载 compass,因为 sass-rails 会覆盖资产方法以使用资产管道。
最后,如果您使用 capistrano 进行部署,请添加
load 'deploy/assets'
在部署时启用资产编译。
【讨论】:
【参考方案3】:qnm 实际上,我认为 image_url 助手有错误。不确定他们是否修复了它,但我看到了使用带有“图像”说明的asset_url 的建议。
即asset_url("some.img","image)
【讨论】:
以上是关于Rails 3.1 资产管道和缓存的主要内容,如果未能解决你的问题,请参考以下文章
Rails 3.1 资产管道和手动订购的 Javascript 需要
用于 JavaScript 的 Rails 3.1 资产管道