我们在heroku上有一个相当大的应用程序……这是一个以browsercms为基础的应用程序,它是在此基础上构建的。 Gemfile并不大(我们没有比普通应用更多的gem),但是由于某种原因,部署需要15分钟。由于所有 Assets 的原因,将 Assets 编译并推送到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的要点:https://gist.github.com/aa44bbb06eed97736c20

编辑:我们在轨道上3.2.7

最佳答案

当捆绑程序使用具有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

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

如捆绑程序项目的github问题所示(最后看,一个Heroku家伙响应):

https://github.com/carlhuda/bundler/issues/67

关于heroku - heroku部署花费很长时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12440344/

10-14 16:10
查看更多