7

我们有一个相当大的应用程序正在 Heroku 上运行......它是一个使用 browsercms 作为基础的应用程序,它建立在此之上。Gemfile 并没有那么大(我们没有比普通应用程序更多的 gem),但出于某种原因,部署需要 15 分钟。由于所有资产,编译和推送资产到 s3(通过资产同步)大约需要 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

编辑:我们在轨道上 3.2.7

4

2 回答 2

2

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

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

如果您像这样指定一个特定的分支,它可能会有所帮助:

gem "browsercms", "3.5.3", git: 'git://github.com/josiahivey/browsercms.git', :branch => 'master'

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

您也可以尝试运行 bundle pack 命令,如下所示:

bundle pack --all

这会将你所有的 gem(也应该是 git 的,因为 --all 开关)放到你的 vendor/cache 目录中。

正如 bundler 项目的这个 github 问题中所指出的那样(看看最后,一个 heroku 的人回应):

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

于 2012-09-19T19:01:11.243 回答
0

有两件事加速了这个过程。Bundler 1.2.1 似乎有所帮助,turbo sprockets节省了几分钟。现在可以忍受了。

于 2012-10-15T19:05:35.667 回答