我们有一个相当大的应用程序正在使用heroku ...它是一个使用browsercms作为基础的应用程序,它建立在它之上。 Gemfile并不是那么大(我们没有比普通应用程序更多的宝石),但出于某种原因,部署需要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锁在repo中,并推送到heroku,这是我们gemfile的要点:https://gist.github.com/aa44bbb06eed97736c20
编辑:我们正在使用rails 3.2.7
答案 0 :(得分:2)
当bundler使用具有git repo的gem时,它将下载整个git repo以包含gem,而不仅仅是master分支或任何分支是主分支。
我们与sferik的rails_admin
gem有同样的问题。
如果你指定一个特定的分支,可能帮助:
gem "browsercms", "3.5.3", git: 'git://github.com/josiahivey/browsercms.git', :branch => 'master'
一种方法是在进行更改之前和之后查看已编译的段塞大小。在我们的例子中,rails_admin
负责我们的大小约30mb。 Heroku也有100mb的大小限制,仅供参考。
您也可以尝试运行这样的bundle pack命令:
bundle pack --all
这会把你所有的宝石(也就是git的宝石,因为--all开关)放到你的供应商/缓存目录中。
正如这个github所指出的那样,对于捆绑项目来说(看看最后,一个heroku家伙的回应):
答案 1 :(得分:0)
加速这个过程有两件事。 Bundler 1.2.1似乎有所帮助,turbo sprockets节省了好几分钟。现在可以容忍了。