为什么Rails资产管道在未被调用的情况下编译CSS清单" application.css.scss"?

时间:2014-06-26 12:33:10

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

到目前为止,我的所有应用程序的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" />

在调试时,我发现清单HAS被称为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" />
...

是什么让#34; application.css.scss&#34;特殊?

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

(如果我在部署到Heroku的所有相关内容)

1 个答案:

答案 0 :(得分:0)

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

# 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)