2012-04-20 37 views
2

我正在使用Rails和Compass。为什么我需要在我所有的sass文件中用'@import compass'进行预编译?

bundle exec rake RAILS_ENV=staging RAILS_GROUPS=assets assets:precompile' 
** rake aborted! 
** Undefined mixin 'column'. 
** (in /....../app/assets/stylesheets/clients.css.sass) 

application.css.sass

@import compass 
@import _blueprint 
@import "compass/layout/sticky-footer" 
@import "compass/css3/gradient" 
@import "partials/_base" 
@import "blueprint/reset" 
@import "blueprint/colors" 
@import "blueprint/grid" 
@import "blueprint/fancy-type" 
@import "blueprint/scaffolding" 
@import "blueprint/form" 
@import "clients" 

clients.css.sass

#clients 
    +column(4) 

所以,你可以看到:直到我部署到生产环境在这一点,我打一切的伟大工程clients.css.sass不导入指南针,蓝图等,它由application.css.sass导入。但为什么资产编译器试图自行编译这个文件?我可以通过给每个css.sass文件添加'@import compass'来解决它,但似乎并不需要。

回答

3

确保您的应用程序清单不包含require_tree .或类似内容。如果链轮需要sass导入之外的文件,它总是会引发这个错误。起初我遇到了很多麻烦。

如果情况并非如此,那么Rails的版本是什么?在早期的Rails 3.1.x中,有一些Rake预编译问题在稍后得到修复...

+0

我没有require_tree任何地方。使用Rails 3.2.1 – 99miles 2012-04-20 17:28:39

0

我发现在Rails和资产管道中,您需要使用部分表示法指定@import罗盘和蓝图子元素。为了让column功能工作,你将需要:

@import "blueprint/_grid" 

顺便说一句,有什么理由不使用引号的前两行 - 我本来期望以下是必需的:

@import "compass" 
@import "blueprint" 

虽然不是100%,在这种情况下,某些如果blueprint线需要的领先_虽然我绝对导入compass没有它下的Rails 3.2.3