heroku 部署需要很长时间

标签 heroku bundler asset-pipeline gemfile deploying

我们有一个相当大的应用程序正在 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

编辑:我们正在使用 Rails 3.2.7

最佳答案

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

我们在使用 sferik 的 rails_admin gem 时也遇到了同样的问题。

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

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

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

您还可以尝试像这样运行 bundle 命令:

bundle pack --all

这会将你所有的 gem(应该还有 git 的,因为 --all 开关)放入你的供应商/缓存目录中。

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

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

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

相关文章:

css - 是否可以只编译/提供 Assets 的一个子集?如何?

ruby-on-rails - Heroku 没有看到 gem 'pg'

ruby-on-rails - bundle 更新卡在 "Fetching source index for http://rubygems.org/"

ruby-on-rails - Rails 3.1 应用程序未定义 JST

ruby-on-rails - Windows 上的 Rails Bundler 拒绝安装 hpricot(即使在手动安装 gem 时也会出现错误 : no such file to load -- hpricot)

ruby - Travis 构建 Jekyll 项目失败 - 无法找到 Jekyll?

javascript - Rails VideoJS swf-Flash-后备 asset_path

django - key 错误 : 'DATABASE_URL'

ruby-on-rails - Heroku 上的 Rails 样式表

django - 如果我在 Heroku 上使用 Django 和 Django-South,Fabric 部署应该如何工作?