Heroku 需要很长时间

Heroku 需要很长时间,heroku,bundler,asset-pipeline,gemfile,deploying,Heroku,Bundler,Asset Pipeline,Gemfile,Deploying,我们有一个相当大的应用程序正在heroku上运行。。。这是一款以browsercms为基础的应用程序,它就是建立在这个基础之上的。Gemfile没有那么大(我们没有比普通应用程序更多的Gem),但由于某些原因,部署需要15分钟。编译资产并将其推送到s3(通过assetsync)大约需要5分钟,因为所有的资产都存在,但剩余的10分钟用于此过程: ----> Heroku receiving push -----> Removing .DS_Store files ----->

我们有一个相当大的应用程序正在heroku上运行。。。这是一款以browsercms为基础的应用程序,它就是建立在这个基础之上的。Gemfile没有那么大(我们没有比普通应用程序更多的Gem),但由于某些原因,部署需要15分钟。编译资产并将其推送到s3(通过assetsync)大约需要5分钟,因为所有的资产都存在,但剩余的10分钟用于此过程:

----> Heroku receiving push   
-----> Removing .DS_Store files
-----> Ruby/Rails app detected
-----> Using Ruby version: ruby-1.9.3
-----> Installing dependencies using Bundler version 1.2.0
       Running: bundle install --without development:test --path vendor/bundle --binstubs bin/ --deployment
有人知道为什么这部分要花这么长时间吗?gemfile锁在回购协议中,并推送到heroku,下面是我们gemfile的要点:


编辑:我们使用的是rails 3.2.7

当bundler使用具有git repo的gem时,它将下载整个git repo,以便包括gem,而不仅仅是主分支或任何作为主分支的分支

我们在sferik的
rails\u admin
gem中遇到了同样的问题

如果您指定一个特定的分支,例如:

gem "browsercms", "3.5.3", git: 'git://github.com/josiahivey/browsercms.git', :branch => 'master'
一种判断方法是在进行更改之前和之后查看编译的段塞大小。在我们的例子中,
rails\u admin
负责大约30mb的slug大小。Heroku也有100mb的slug大小限制,仅供参考

您也可以尝试如下方式运行bundle-pack命令:

bundle pack --all
这将把您的所有gem(由于--all开关,可能也是git gem)放入您的vendor/cache目录

正如github为bundler项目所做的说明(看看结尾,一个heroku的家伙回应):


有两件事加快了这一进程。Bundler 1.2.1似乎有所帮助,并节省了好几分钟。现在还可以接受。

你试过出售你的宝石吗?尝试使用
bundle-package
缓存下载的
.gem
文件,然后运行
git-add.&&git commit-m“Gems中的供应商”将它们添加到您的存储库中。这将使Gem安装即时(假设这是瓶颈)。它也可能是资产编译阶段,在这种情况下,您希望运行
rake资产:预编译和&git commit-a-m“重新编译资产“
在每次部署之前。出售宝石有助于减少。。。本地预编译并没有真正节省时间——它花费的时间也差不多。指定分支最多只节省了几兆。我们目前的弹头大小为55兆(其中很多是browsercms)。