【问题标题】:Rails 4 Asset Pipeline w/ 3rd party css带有 3rd 方 css 的 Rails 4 资产管道
【发布时间】:2014-04-04 17:11:44
【问题描述】:

通过阅读 Rails 4 Asset Pipeline 指南,您可以为 3rd 方资产做什么。比如我包含了一个别人开发的css文件,我是否需要通过并确保这样的事情

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

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

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

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

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

在 Rails 4 中,sprockets 只会产生摘要文件名。这意味着您必须使用这样的 ERB 助手来引用您的资产:

&lt;%= asset_path('logo.png') %&gt;

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

【问题讨论】:

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


    【解决方案1】:

    对于第三方资产,您只需将 gem 添加到 Gemfile。最知名的 3rd 方图标集(例如您提到的那些)已经有一个可以将它们包含在资产管道中的宝石:

    字体真棒:https://github.com/bokmann/font-awesome-rails

    引导程序:https://github.com/seyhunak/twitter-bootstrap-rails

    输入密码:https://github.com/lwe/entypo-rails

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

    RAILS_ENV=production bundle exec rake assets:precompile

    这会添加包含已编译资产的 public/assets 文件。根据Asset Pipeline Guide:

    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.
    

    所以每次文件更改都会生成一个新的指纹。

    【讨论】:

    • 并非所有事物都有宝石。这些只是作为例子。这并没有回答关于 css 和指纹识别中 erb 的基本问题。我编辑了我的问题。
    • 感谢您更新您的答案。
    • 该文档还指出:使用资产管道时,必须重写资产路径,并且 sass-rails 为以下内容提供 -url 和 -path 帮助器(在 Sass 中为连字符,在 Ruby 中为下划线)资产类别:图像、字体、视频、音频、JavaScript 和样式表。
    • 专门处理 sass。有关更多信息,您应该查看 rails-sass gem:github.com/rails/sass-rails
    • 嗯,除了迎合可配置性之外,每个引用的库是否都在其 css.erb 中使用asset_path/font_path?
    猜你喜欢
    • 2017-11-26
    • 1970-01-01
    • 2012-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多