heroku部署需要很长时间

cou*_*mas 6 heroku deploying bundler asset-pipeline gemfile

我们有一个相当大的应用程序正在使用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
Run Code Online (Sandbox Code Playgroud)

任何人都有任何线索为什么这部分需要这么长时间?gemfile锁在repo中,并推送到heroku,这里是我们的gemfile的主旨:https://gist.github.com/aa44bbb06eed97736c20

编辑:我们在轨道3.2.7

jak*_*ils 2

当捆绑器使用具有 git 存储库的 gem 时,它将下载整个 git 存储库以包含该 gem,而不仅仅是 master 分支或任何作为主分支的分支。

rails_admin我们对sferik 的 gem 也有同样的问题。

如果您像这样指定特定分支可能会有所帮助:

gem "browsercms", "3.5.3", git: 'git://github.com/josiahivey/browsercms.git', :branch => 'master'
Run Code Online (Sandbox Code Playgroud)

判断的一种方法是查看更改之前和之后编译的 slug 大小。在我们的例子中,rails_admin它负责大约 30mb 的 slug 大小。Heroku 也有 100mb 的 slug 大小限制,仅供参考。

您也可以尝试运行捆绑包命令,如下所示:

bundle pack --all
Run Code Online (Sandbox Code Playgroud)

这会将你的所有 gem(由于 --all 开关的缘故,应该也是 git 的)放入你的供应商/缓存目录中。

正如捆绑器项目的 github 问题中所示(看最后,一个 Heroku 人的回应):

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