不同的资产摘要取决于css.sass或css

Sch*_*ems 5 ruby-on-rails asset-pipeline

使用Rails 3.2.13我得到不同的资产路径,asset_path取决于我是否使用.css.sass或只是.css这个预期?

例如,如果我app/assets/stylesheets/foo.css.sass在样式表目录中只有一个而没有其他内容,如果我不小心使用asset_pathsass版本,我会得到一个不存在的文件:

Loading production environment (Rails 3.2.13)
irb(main):001:0> helper.asset_path "foo.css.sass"
=> "/assets/foo-b148cf064a02aef053d2902b6a1fa5a9.css"
Run Code Online (Sandbox Code Playgroud)

使用asset_pathjust plain css会产生正确的路径.

irb(main):002:0> helper.asset_path "foo.css"
=> "/assets/foo-1b1fbb65d54bbc52b702c0f1d2efcc38.css"
Run Code Online (Sandbox Code Playgroud)

foo-1b1fbb65d54bbc52b702c0f1d2efcc38.css在我运行时生成rake assets:precompile.有谁知道不同的哈希值来自哪里?

CMW*_*CMW 0

快速回答:我认为哈希值是根据编译文件的最新 mtime 生成的。

长答案:我查了一下并无法确认它,但我相信我已经读到这个哈希类型字符串是从您想要编译的所有文件的最新 mtime 生成的。

所以我的猜测是 foo.css 比 foo.css.sass 新,因此 mtime 在预编译时获胜。

如果您想进一步深入了解它,我已经将其跟踪到digest_path内部的一个方法digest_for