一切都在发展中很有效。而且应用程序与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的无数配置选项中的哪一个我们拙劣?
修改
麻烦的图像似乎是我们使用的第三方Colorbox图像查看工具中包含的图像。 Rails 3.1指纹识别其资产(border.png等),但很明显,这个javascript库的源代码不使用像image_tag
这样的帮助程序。所以在制作中它仍然在寻找名为/assets/colorbox/border.png
的图像。目前图像位于/ vendor / assets / images中,在开发中工作正常。 有没有办法阻止这些图像被“指纹识别”?
答案 0 :(得分:1)
嗯,这就是我如何破解第三方文件以使其有效:
违规图片位于vendor/assets/stylesheets/colorbox.css
等文件中。我首先将文件的扩展名更改为.scss
,然后将每个url(colorbox/image.png)
更改为image_url("color box/image.png")
,现在一切都很好。资产通常在开发中提供,并在生产中进行指纹识别。
仍然希望看到添加第三方(供应商)javascript库的“正确”方式&amp; 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天那样。