2

我正在使用 Rails 和 Compass。一切都很好,直到我部署到生产时,我点击了:

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

应用程序.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"

客户.css.sass

#clients
  +column(4)

所以你可以看到clients.css.sass 没有导入指南针、蓝图等,b/c 它是由application.css.sass 导入的。但是为什么资产编译器试图自己编译这个文件呢?我可以通过在每个 css.sass 文件中添加“@import compass”来修复它,但似乎我不应该这样做。

4

2 回答 2

3

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

如果不是这种情况,您使用的是哪个版本的 Rails?在早期的 Rails 3.1.x 中,rake 预编译存在一些问题,这些问题后来得到了修复......

于 2012-04-20T17:26:17.090 回答
0

我在 Rails 和 Asset Pipeline 中发现,您需要@import使用部分符号来罗盘和蓝图子元素。要使该column功能正常工作,您需要:

@import "blueprint/_grid"

顺便说一句,您没有在前两行使用引号的任何原因 - 我预计需要以下内容:

@import "compass"
@import "blueprint"

虽然在这种情况下不是 100% 确定该blueprint行是否需要前导,尽管我在 Rails 3.2.3 下_肯定会在没有它的情况下导入compass

于 2012-04-21T13:29:27.587 回答