Rails 4 Asset Pipeline w / 3rd party css

时间:2014-04-04 17:11:44

标签: ruby-on-rails ruby-on-rails-4

从阅读Rails 4 Asset Pipeline指南可以为第三方资产做些什么。例如,如果我包含由其他人开发的css文件,我是否需要通过并确保这样的事情

.logo {
  background-image:url('<%= asset_path("logo.png") %> ');
}

是用erb语法定义的吗? IE如果只引用了没有ERB语法的/assets/logo.png会怎样?

也许我会失去资产指纹? IE如果我加载没有指纹的静态资产,浏览器可能总是缓存该资产 - 无限期。

如果指向管道中的资产并且资产已更新,那么指纹就会被更新,因此在加载时会在远程浏览器上更新。

阅读Heroku Rails 4资产管道指南时,我想到了这种困惑。

  

在Rails中,4个链轮只会生成摘要文件名。这意味着您必须使用此类ERB帮助程序来引用您的资产:

<%= asset_path('logo.png') %>

  

确保为使用ERB帮助程序的app / assets中的任何文件添加.erb扩展名。因此application.css需要是application.css.erb。

1 个答案:

答案 0 :(得分:0)

对于第三方资产,您只需将gem添加到Gemfile即可。大多数众所周知的第三方图标集,例如您提到的那些已经有一个宝石,可以将它们包含在资产管道中:

Font Awesome:https://github.com/bokmann/font-awesome-rails

Bootstrap:https://github.com/seyhunak/twitter-bootstrap-rails

Entypo:https://github.com/lwe/entypo-rails

您可以使用静态文件background-image:url("logo.png);预编译资产后,rails会添加指纹识别。

RAILS_ENV=production bundle exec rake assets:precompile

这会添加包含已编译资产的公共/资产文件。根据{{​​3}}:

In production, Rails inserts an MD5 fingerprint into each filename so that 
the file is cached by the web browser. You can invalidate the cache by altering
this fingerprint, which happens automatically whenever you change the file contents.

因此,每次文件更改时都会生成新指纹。