Rails 3.1资产管道没有获取@ import'd工作表的更改

时间:2011-08-12 21:27:39

标签: import sass ruby-on-rails-3.1 asset-pipeline

我使用@import'部分工作表来整理我的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文件中共享mixins和变量,然后再将它们编译为app.css

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

是否有办法强制sass资产在开发中的每个服务器请求上重新生成?

2 个答案:

答案 0 :(得分:29)

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

例如:

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

请参阅此sass and sprockets blog post以及sprockets documentation(尤其是指令部分)。

答案 1 :(得分:2)

nanothief的回答让我得到了解决方案(谢谢!),但是是间接的。一旦我终于找到时间重新回到这里并查看引用的帖子,它已经更新,说不再需要修复。

果然,看起来这个bug已经在Rails 3.1.0 stable中修复了,并且sass-rails为3.1.0。超好的!我已经确认更新宝石会让一切恢复正常,并在几个应用程序中进行测试。