Rails Assets 预编译太慢了~12hrs

     2023-03-04     42

关键词:

【中文标题】Rails Assets 预编译太慢了~12hrs【英文标题】:Rails Assets precompile is too slow ~12hrs 【发布时间】:2014-02-24 06:28:11 【问题描述】:

我是本地预编译资产like this RAILS_ENV=production bundle exec rake assets:precompile,但是 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";

我的宝石文件:

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

更新1

My complete Gemfile

更新2

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

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

UPDATE3

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

我更改了 css_compresor,现在我使用的是:yui。 我更改了 application.css.scss 以支持使用 Sprocket 的 require 指令。

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

预编译时间:~24min

【问题讨论】:

12 小时,真的吗? 你能给我们整个 Gemfile 吗? @marvelousNinja pastebin.com/BSbadzrj 我不知道这是否与此有关,诚然,但是您的资产文件夹中是否有一些特别大的文件(图像和/或其他非 css/js 资产)?另外,预编译时您的内存和 CPU 使用情况如何?是否有很多交换等正在进行? 尝试部署到heroku。当您执行 git push 时,它将编译您的资产。这将测试问题是出在您的机器上还是出在您的代码上。 【参考方案1】:

我解决了这个问题:

问题是在我的 .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>

【讨论】:

【参考方案2】:

看看这个,你的问题的根源可能是相似的(即@import很慢):https://gist.github.com/noniq/1746744

在最快的 i7 Macbook Pro 上,我们的资产编译时间为 7 分钟。使用上述技巧将其缩短到 2 分钟多一点。事实证明我们对罗盘的使用很差,更好的解决方案是只在必要时导入它,并且只在给定的 scss 部分中导入我们需要的罗盘的特定部分。即使是导入 compass 的空 scss 文件也需要大约 2 秒的时间来编译,而且由于我们有很多很多部分,所以它加起来了。

【讨论】:

预编译咖啡脚本文件(Rails 4)

...014-12-1210:22:05【问题描述】:在我的Rails4应用程序中,app/assets/javascripts中有一个users.js.coffee文件。它在开发中编译并运行良好。但是当我部署到heroku时它不起作用。根据Railsguides:匹配器(和预编译数组的其他成员;见下文)应... 查看详情

rails4 rake assets 在生产环境中预编译生成错误的javascript文件

】rails4rakeassets在生产环境中预编译生成错误的javascript文件【英文标题】:rails4rakeassetsprecompileinproductionenvironmentgeneratewrongjavascriptfile【发布时间】:2015-08-3108:33:28【问题描述】:我正在部署我的rails应用程序,我发现当我运行RAIL... 查看详情

使用 rails 资产管道预编译超薄模板

...果我可以,那将非常方便。我希望将我的模板粘贴在app/assets/html中并以这种方式提供它们。这是我目前所得到的:#config/initializers/slim.rbRails.application.assets 查看详情

即使在 config/initializers/assets.rb 中声明,Sprockets Rails Helper Asset 也未预编译

】即使在config/initializers/assets.rb中声明,SprocketsRailsHelperAsset也未预编译【英文标题】:SprocketsRailsHelperAssetNotPrecompiledeventhoughdeclaredinconfig/initializers/assets.rb【发布时间】:2016-08-1208:29:38【问题描述】:我有一个带有邮件程序的Rails... 查看详情

预编译heroku后生产中缺少Rails资产

】预编译heroku后生产中缺少Rails资产【英文标题】:Railsassetsmissingonproductionafterprecompileheroku【发布时间】:2018-06-2700:16:57【问题描述】:由于heroku中的安全漏洞,我不得不在production.rb中设置config.assets.compile=false。之后,我注意到... 查看详情

rails 4 资产管道供应商资产图像未预编译

...商资产图像未预编译【英文标题】:rails4assetpipelinevendorassetsimagesarenotbeingprecompiled【发布时间】:2012-12-2102:40:43【问题描述】:我的应用程序和fancybox2-railsgem使用rails4和ruby1.9.3,但是资产管道存在一般问题。如果我运行raketask进... 查看详情

Heroku Rails 4 资产:预编译编译所有(也未更改)资产

...编译编译所有(也未更改)资产【英文标题】:HerokuRails4assets:precompilecompilesall(alsounchanged)assets【发布时间】:2015-09-2915:13:36【问题描述】:在每次推送到Heroku时,所有资产都会被预编译,因此不仅是已更改的资产。因此,资产... 查看详情

CSS中的Rails预编译错误

...idCSSafter"":expectedselectororat-rule,was""(in/home/test/www/dispatch/app/assets/stylesheets/application.css)(sass):364上述错误是我的预编译中发生的, 查看详情

Rails 预编译供应商/资产

...的Rails控制台中,我得到了这个:putsRails.application.config.assets.precompile#<Proc:0x000000023b2110@/home/pills/.rvm/gems/r 查看详情

Rails 4 - 在生产服务器上预编译资产后没有 manifest.json

...产后没有manifest.json【英文标题】:Rails4-NOmanifest.jsonafterassetsprecompileonproductionserver【发布时间】:2015-06-1820:38:17【问题描述】:这里是Rails4.2应用的app/assets/。有3个引导js和css文件。部署到生产环境(ubuntu12.1)后,资产预编译在... 查看详情

为啥资产:Rails 6.1 上的预编译失败?

...?【发布时间】:2021-04-0722:49:22【问题描述】:我在app/assets/images中有一个图像资产,我正在尝试在按照assetpipelineguide部署到生产环境之前对其进行编译。在尝试执行时:RAILS_ENV=productionr 查看详情

Rails 3.1 资产预编译 - 包括所有 javascript 文件

...译。特别是,编译文件的默认匹配器不会添加来自vendor/assets/javascripts的.js文件。我可以将资产添加到config.asse 查看详情

预编译资产 - rails 4.1.1

】预编译资产-rails4.1.1【英文标题】:precompileassets-rails4.1.1【发布时间】:2014-05-2922:55:51【问题描述】:我正在生产中设置第一个ruby​​站点,一切正常,但是当我运行时rakeassets:precompile它在“public/assets/”目录中添加css/jsok,... 查看详情

Rails 预编译错误(无效的 UTF-8 字节序列)

...【发布时间】:2013-01-1720:44:57【问题描述】:我不小心在assets/images中放了一个js文件,现在即使我删除了js文件,heroku也不让我预编译我的资源。这是我收到的错误消息AssetSync:YAMLfilefound/tmp/build_326as 查看详情

Ruby Rails 预编译资产与使用资产管道

...编译资产与使用资产管道【英文标题】:RubyRailsprecompilingassetsvs.usingtheassetpipeline【发布时间】:2016-03-1417:10:32【问题描述】:我想知道何时使用Rails.application.config.assets.precompile来包含Javascript插件,以及何时使用资产管道。据我... 查看详情

bundle exec rake assets:预编译失败,出现“意外令牌”

】bundleexecrakeassets:预编译失败,出现“意外令牌”【英文标题】:bundleexecrakeassets:precompilefailswith`unexpectedtoken`【发布时间】:2012-02-0920:41:39【问题描述】:我已准备好将我的Rails3.1应用程序部署到生产环境中,因为我正在使用... 查看详情

加速资产:使用 Rails 3.1/3.2 Capistrano 部署预编译

...:使用Rails3.1/3.2Capistrano部署预编译【英文标题】:Speedupassets:precompilewithRails3.1/3.2Capistranodeployment【发布时间】:2012-02-1910:06:58【问题描述】:我的部署速度很慢,至少需要3分钟。部署期间缓慢的Capistrano任务是assets:precompile。这... 查看详情

Rails:Heroku 的预编译?

】Rails:Heroku的预编译?【英文标题】:Rails:PrecompileforHeroku?【发布时间】:2014-04-0719:12:08【问题描述】:在Heroku上部署我的应用程序的新版本之前,我需要在我的控制台中执行此操作(以便css和js在Heroku上工作):RAILS_ENV=producti... 查看详情