【发布时间】:2013-11-02 01:17:17
【问题描述】:
在开发中一切都很好。 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 的众多配置选项中的哪一个?
编辑
麻烦的图像似乎是我们使用的第 3 方Colorbox 图像查看工具中包含的图像。 Rails 3.1 正在对其资产(border.png 等)进行指纹识别,但很明显,这个 javascript 库的源代码没有使用像 image_tag 这样的帮助器。所以在生产中它仍在寻找名为/assets/colorbox/border.png 的图像。当前图像位于 /vendor/assets/images 中,并且在开发中可以正常工作。 有没有办法防止这些图像被“指纹”?
【问题讨论】:
-
可能想看看这个问题,stackoverflow.com/questions/7336265/…
-
根据Rails Guides:“指纹行为由 Rails 中的 config.assets.digest 设置控制(生产环境为真,其他一切为假)。”所以,
config.assets.digest应该在生产环境中被假定为 true 而在其他任何地方都应该被假定为 false。还是我读错了?!? -
将
config.assets.digest = true添加到production.rb似乎只是部分有帮助。它有一些图像(我的)工作。但是我们使用的第 3 方 javascript 工具(请参阅主帖中的编辑)中包含一些仍然“损坏”的工具。 -
我也有同样的问题。我的生产图像没有指向指纹版本。
标签: ruby-on-rails ruby-on-rails-3 asset-pipeline fingerprinting