我正在尝试在我的 rails 3.0 app 中复制 rails 3.1 中引入的资产管道的基础知识。
到目前为止,我有这样的东西: https ://gist.github.com/1112393 。
它工作得很好:
- 我的资产在 app/assets/、lib/assets、vendor/assets...
- 它们都在 /assets 提供
- 我可以使用 sprockets 2 提供的所有东西等...
问题是,我不希望 rails 应用程序提供静态资产。服务器应该这样做。这就是为什么你可以在 rails 3.1 中预编译资产,如果我理解正确的话。所以我做了一个 rake 任务(使用 Sprockets::Environment 的预编译方法)。它有效,我的所有资产都在 /public/assets/。
例如,我有
- 应用程序-02f8c96b342b4569513d0edf39ef55eb.css
- 应用程序-505e8f472350fb1e0d15f6ad2f5e0389.js
- 画廊图标-0e922050a85718fef3cd570df4eb5845.png
但是在 rails 3.1 中,您可以在 style.css.scss.erb 中执行类似的操作
background: url(<%= asset_path("gallery-icons.png") %>)
你会得到
background: url(/assets/gallery-icons-0e922050a85718fef3cd570df4eb5845.png)
在预编译文件中。
如果我没记错的话,stylesheet_link_tag 和 javascript_link_tag 也一样,它们在 rails 3.1 中被覆盖以添加散列。
我怎样才能做到这一点?
把你能想到的每一个想法都给我!谢谢。