ruby - bundle install/update太慢了

Rob*_*uch 37 ruby rubygems ruby-on-rails bundler

我刚刚在虚拟机中运行的虚拟ubuntu 12.04 32bit上安装了RVM,Ruby,Rails等.现在我遇到了第一个rails项目bundle installbundle update需要很长时间的问题.即使我用rails创建一个新项目(包括bundle install).

我只使用标准宝石:

source 'https://rubygems.org'

gem 'rails', '3.2.12'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

group :development do
  gem 'sqlite3', '1.3.5'
end


# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '3.2.5'
  gem 'coffee-rails', '3.2.2'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  # gem 'therubyracer', :platforms => :ruby

 gem 'uglifier', '1.2.3'
end

gem 'jquery-rails', '2.0.2'
Run Code Online (Sandbox Code Playgroud)

我试过没有任何宝石的捆绑安装但是gem 'rails', '3.2.12'.之后我再次输入bundle install我的gemfile中的所有宝石.我花了10分钟来检查依赖项.--verbose的输出的混合HTTP successHTTP redirection.

Rails版本:Rails 3.2.12

Ruby版本:ruby 1.9.3p392(2013-02-22修订版39386)

Rvm:rvm 1.18.18

捆绑版本:Bundler版本1.3.2

我已经搜索了一个解决方案,但没有任何帮助.

Rob*_*uch 41

更改httpshttp在我的Gemfile那样神奇.在我必须创建项目之前rails new APP --skip-bundle

我想在此警告,通过http使用https有一个安全目的.首先尝试这个帖子中提到的其他答案.

  • 为什么SSL使Bundler这么慢? (18认同)
  • 鉴于rubygems.org的高调性质,这可能非常危险.我说没有高调缓存中毒攻击或类似的唯一原因是*因为*gemfiles默认为https.请参阅:http://stackoverflow.com/questions/19559754/why-rails-gemfile-defaults-to-https-when-http-makes-bundler-so-much-faster (9认同)
  • 我在使用Rails 4 beta 1和Ruby 2的OS X上遇到了同样的问题并修复了它.将https更改为http会使"捆绑安装"的速度提高5倍左右 - 从痛苦(分钟)到极好(<20秒).主要的减速似乎是"从http://rubygems.org/...........获取宝石元数据"部分. (3认同)
  • @Nick,你在哪里更改它(https -&gt; http)? (2认同)

Moh*_*ain 13

Bundler刚刚得到了宝石并行处理的更新.

gem install bundler --pre 
Run Code Online (Sandbox Code Playgroud)

现在将以最好的方式解决问题.

资源


duy*_*hoa 5

您也可以使用多个作业,它可能会有所改善

  bundle install --jobs 8
Run Code Online (Sandbox Code Playgroud)

这是一个关于它的教程


Red*_*Red 5

Bundler v1.12.x于2016年发布,导致一些用户遇到缓慢的捆绑安装问题.

在这种情况下,在发布修复程序之前,保持v1.11.2是最佳选择(它很快).

值得前往Rubygems.org尝试不同版本的bundler gem.

检查现有的Bundler版本,卸载现有版本,安装1.11.2版本示例:

gem list | grep bundler

gem uninstall bundler -v existing-version-number

gem install bundler -v 1.11.2
Run Code Online (Sandbox Code Playgroud)