【问题标题】:Why won't the Rails asset pipeline compile a CSS manifest when it's not called "application.css.scss"?为什么 Rails 资产管道不编译不称为“application.css.scss”的 CSS 清单?
【发布时间】:2014-06-26 12:33:10
【问题描述】:

到目前为止,我的所有应用程序的 CSS 都通过 application.css.scss 提供,如下所示:

/* ...
*= require jquery-ui
*= require_self
*= require_tree .
*/

@import "bootstrap";

我最近需要创建一个单独的、精简的清单文件,该文件只为我们网站中的一个可嵌入资产提供服务。不幸的是,虽然我无法让资产管道打包和处理 CSS 文件。它通过如下所示的 URL 不断投入生产:

<link href="/stylesheets/minimag.css" rel="stylesheet" />

而不是指纹识别和预编译应该看起来像:

<link href="/assets/minimag-292d6edcd4fd2398abab273acf8.css" rel="stylesheet" />

在调试时我发现清单必须被称为 application.css

我很有可能遗漏了什么。但是在将问题剥离到其基本要素时,我只查看了应用程序的样式表本身。

我发现当它被称为application.css.scss 时,它编译得很好,但是当名称被更改时它没有得到处理:

所以这行得通:

application.html.haml

...
= stylesheet_link_tag "application"
...

连同一个名为application.css.scss 的样式表。在生产中,这会产生包含 HTML:

...
<link href="/assets/application-292d6edcd4fd6ec1da12b93fb273acf8.css" rel="stylesheet" />
...

但这不起作用

application.html.haml

...
= stylesheet_link_tag "testing"
...

完全相同样式表一起,但现在重命名为testing.css.scss。在生产中,这会产生包含 HTML:

...
<link href="/stylesheets/testing.css" rel="stylesheet" />
...

“application.css.scss”有何特别之处?

为什么会这样?为什么我不能只使用具有旧名称的清单文件?

(如果它完全相关,我将部署到 Heroku)

【问题讨论】:

    标签: ruby-on-rails heroku asset-pipeline


    【解决方案1】:

    如果要将样式表用作独立文件,则必须将样式表添加到预编译中。

    # config/environments/production.rb
    
    # Precompile additional assets.
    # application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
    config.assets.precompile += %w(testing.css)
    

    【讨论】:

      猜你喜欢
      • 2014-08-28
      • 1970-01-01
      • 2012-05-14
      • 2013-05-28
      • 2013-07-30
      • 1970-01-01
      • 1970-01-01
      • 2013-05-08
      • 2011-11-14
      相关资源
      最近更新 更多