19

我使用@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 文件被编译成之前共享 mixins 和变量app.css

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

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

4

2 回答 2

29

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

例如:

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

请参阅这篇sass 和 sprockets 博客文章以及sprockets 文档(尤其是指令部分)。

于 2011-09-01T11:36:03.730 回答
2

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

果然,这个错误似乎已经在 Rails 3.1.0 stable 中用 sass-rails for 3.1.0 修复。超好的!我已经确认更新 gem 确实可以让一切恢复正常,并在几个应用程序中进行了测试。

于 2011-09-14T18:58:31.830 回答