【问题标题】:Rails 3.1 Assets are being fingerprinted in production but rendered HTML is notRails 3.1 资产在生产中被指纹识别,但渲染的 HTML 不是
【发布时间】: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


【解决方案1】:

好吧,这就是我如何破解第 3 方文件以使其正常工作:

违规图片位于 vendor/assets/stylesheets/colorbox.css 之类的文件中。我首先将文件的扩展名更改为.scss,然后将每个url(colorbox/image.png) 更改为image_url("color box/image.png"),现在一切都很顺利。资产在开发中正常提供服务,并在生产中进行指纹识别。

仍然希望看到将第 3 方(供应商)javascript 库和 css 添加到 Rails 3.1 应用程序的“正确”方式。 Rails 团队一定已经预料到了一个不需要编辑的即插即用解决方案?!?因此,请随时提供其他解决方案。


除此之外:我之前手动配置了我的 Capistrano 配方:

run "cd #{release_path}; RAILS_ENV=production bundle exec rake assets:precompile"

…及其随附的after deploy:update_code …。我现在已经删除了这些行,而是将load 'deploy/assets 添加到我的Capfile。我认为这对上述问题没有任何影响,但我还是想记录下来,因为在 Capistrano 2.8 中不再需要像在 3.1rc 时代那样添加自己的管道预编译配方。

【讨论】:

  • 我遇到了完全相同的问题,我很惊讶到目前为止关于这个问题的问题或博客文章很少。我对 Railscasts.com 的“升级到 Rails 3.1”一集的评论部分表达了确切的担忧,说的类似于你所说的:Rails 团队为什么没有预料到有图像的 3rd 方库?我们不可能为遇到的每个 css 文件更改 url()。看起来真的很糟糕。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-04
相关资源
最近更新 更多