Rails 3.1资产管道无法接收对@import的工作表所做的更改

我使用@import'd部分工作表来组织我的CSS / SASS:

/app
  /assets
    /stylesheets
      _constants.sass
      _layout.sass
      ...
      app.css.sass

app.css.sass:
  @import _constants.sass
  // basic styles
  @import _layout.sass
  @import ...

app.css.sass有一个@import适用于规则_layout.sass,它使我可以在原始sass文件之间共享混合和变量。app.css

问题在于,Rails无法识别对@import'dpartials(_layout.sassapp.css的更改,并且在我对实际app.css.sass文件本身进行更改之前不会重新生成这大大减慢了我的工作流程,意味着我必须添加/删除空白行app.css.sass才能看到更改。在3.0中从来没有这个问题。

有没有一种方法可以强制Sass资产在开发中的每个服务器请求上重新生成?

2020/03/24 11:01:35

nanothief的回答将我引向了解决方案(谢谢!),但是以间接的方式。一旦我终于找到时间回到这里并查找引用的帖子,它就被更新为不再需要此修复程序。

果然,看来此错误已在Rails 3.1.0中用3.1.0的sass-rails修复。这么好!我已经确认,通过几个应用程序测试,更新gem确实可以使所有内容恢复正常工作。

Mandy村村2020/03/24 11:01:35

使用depend_on指令可以满足您的要求。这使给定文件成为基本文件的依赖项(因此,当依赖项更改时,将重新生成基本文件),但不将其包括在捆绑软件中。

例如:

/*
*= depend_on _layout.sass
*= depend_on _constants.sass
*/
@import _layout.sass
@import _constants.sass

请参阅此sass and sprockets博客文章以及sprockets文档(尤其是“指令”部分)。