Rails资产预编译太慢〜12小时

时间:2014-01-31 14:12:17

标签: ruby-on-rails sass twitter-bootstrap-3

我是本地预编译资产like this   RAILS_ENV =生产包exec rake资产:预编译,但它太慢了12小时。我不知道发生了什么!而且我不知道如何开始做某事。 此外,当我在一些样式表文件中进行更改时,这些延迟大约10秒

请有人帮助我,谢谢!

这是我的applications.css.scss

@import "_font-awesome";
@import "jquery.ui.core";
@import "jquery.ui.theme";
@import "dataTables/src/demo_table_jui";
@import "token-input-facebook";
@import "fullcalendar";
@import "fullcalendar.print";

@import "bootstrap";
@import "bootstrap-multiselect";
@import "bootstrap-datetimepicker";

@import "header";
@import "sub_header";
@import "students";
@import "people";
@import "institutions";

我的Gemfile:

gem 'sass-rails', '>= 3.2'
gem 'bootstrap-sass', '~> 3.0.3.0'

其版本:

bootstrap-sass (3.0.3.0)
sass (3.2.12)
sass-rails (3.2.6)

其他信息:

rails 3.2.16
ruby 1.9.3

UPDATE1

My complete Gemfile

UPDATE2

当我禁用资产压缩config.assets.compress = false时,在生产模式下,我得到结果:

real    5m13.113s
user    5m5.355s
sys     0m5.268s

UPDATE3

得到了改进,但没有解决方案。

  • 我更改 css_compresor ,现在我正在使用:yui
  • 我更改application.css.scss以使用Sprockets require指令。

现在这是我的application.css.scss file

预编译的时间是: ~24min

2 个答案:

答案 0 :(得分:2)

我解决了这个问题:

问题是我的.scss文件中使用了@extend句子。 这个问题出现在这个sass版本中。

我想要更多语义html文件(READ HERE以获取更多信息)。

我发现这个问题正在对Sprockets预编译进行内省。使用this精彩教程

解决方案是从我的scss文件中删除所有@extend个句子,并在我的html中使用普通引导程序。

示例:我必须改变它。

# main.html
<div class='user-information'> ... </div>
# main.scss
.user-information {
  @extend .col-md-12
}

由此:

# main.html
<div class='col-md-12'> ... </div>

答案 1 :(得分:1)

检查一下,问题的根源可能类似(即@import很慢):https://gist.github.com/noniq/1746744

我们在最快的i7 Macbook Pro上拥有7分钟的资产编译时间。使用上述hack将其减少到超过2分钟。事实证明我们对指南针的使用很差,更好的解决方案是只在必要时导入它,并且只导入我们在给定的scss部分中需要的指南针的特定部分。即使是导入罗盘的空scss文件也需要大约2秒的时间进行编译,而且由于我们有很多部分内容,因此它会加起来。