2011-06-27 41 views
5

我在资产/样式表目录中设置了一组[对象] .css.scss样式,以与我的应用程序中的不同视图相对应。每片在第一线上的一组全局样式变量值:Rails 3.1 - 强制SCSS变量值刷新?

@import "branding.css.scss"; 

,然后在需要($ primaryColor,$ secondaryColor等)时,整个库访问变量值。

它非常干燥,但不幸的是,当我更改_branding.css.scss文件中的变量值时,Rails不会刷新对象样式表。在SCSS重新编译具有更新的变量值的对象样式库之前,我必须去触摸每个文件。

这是一个轻微的抱怨,但它的破坏性工作流程,特别是当我不断清除浏览器缓存试图修复它:/

有没有更好的方式来组织变量?

有什么办法强制刷新?

+1

的轨道团队忽略了多年来发展起来的Sass惯例,并试图在将它与Sprockets(旨在与“愚蠢的”CSS一起工作)结合时支持语法。我很想听听有关如何将Sprockets的行为更改为Sass自动编译行为的建议(如果有任何文件发生更改,请在tmp目录中缓存),但我认为我们不会找到一。这些资产管道问题在RC中可能会持续至少几个星期。 – coreyward

回答

1

这的确很烦人...

我没有一个完整的解决方案,但有一件事我发现是,所有你需要做的就是触摸“application.css.scss”得到它重新编译一切。

我最近开始使用guard-compass和guard-livereload,但它在3.1中有相同的问题。也许有人比我更聪明可以修复它,以便它触及'application.css.scss'?

3

我一直在变量和mixin到一个includes.css.scss文件,并将其导入到每个样式表需要他们。要在包含文件更改时使Rails重新编译,您需要在application.js中使用depend_on指令。例如:

application.css

/* 
    *= depend_on includes 
    *= require_self 
    *= require stylesheet 
*/ 

includes.css.scss

$bg-color: #999; 

stylesheet.css.scss

@import "includes.css.scss"; 

body { background: $bg-color; } 
+0

你的意思是application.css?我试过这个,并没有强制刷新。我在Win7上开发,因为我是一个受虐狂,也许这就是为什么。 – RSG

+0

是的,我很抱歉!我没有注意到任何问题,但也许尝试'* = require includes'而不是'* = depend_on includes',看看是否有效?也可能需要查看Sprockets文档:https://github.com/sstephenson/sprockets – sausman