41

我刚刚在虚拟机中运行的虚拟 ubuntu 12.04 32bit 上安装了 RVM、Ruby、Rails 等。现在我遇到了我的第一个rails项目bundle install或者bundle 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'

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

Rails 版本:Rails 3.2.12

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

rvm:rvm 1.18.18

捆绑版本:捆绑器版本 1.3.2

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

4

7 回答 7

42

我想警告:在 http 上使用 https 是出于安全目的。首先尝试此线程中提到的其他答案。

在我的Gemfile中更改https为起到了神奇的作用。在我必须创建项目之前httprails new APP --skip-bundle

于 2013-04-16T08:00:45.890 回答
14

Bundler 刚刚更新了 gem 的并行处理。

gem install bundler --pre 

将目前以最好的方式解决问题。

资源

于 2013-09-01T22:56:53.710 回答
5

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

在这种情况下,使用 v1.11.2 是最好的选择(它很快),直到发布修复程序。

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

检查现有捆绑器版本,卸载现有版本,安装 1.11.2 版本示例:

gem list | grep bundler

gem uninstall bundler -v existing-version-number

gem install bundler -v 1.11.2
于 2016-05-15T08:15:34.140 回答
5

您也可以使用多个工作,它可能会改善一点

  bundle install --jobs 8

这是一个关于它的教程

于 2015-07-31T01:36:11.097 回答
3

如果您仍然在 Bundler 1.12.5 中看到此问题,您可能需要尝试更新 Ruby 使用的 OpenSSL

对我来说是这样的:

pmorse$ bundle --version
Bundler version 1.12.5
pmorse$ ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'
OpenSSL 1.0.1j 15 Oct 2014
pmorse$ openssl version
OpenSSL 0.9.8zg 14 July 2015
pmorse$ brew info openssl
openssl: stable 1.0.2h (bottled) [keg-only]

[...更多brew输出...]

pmorse$ rvm reinstall ruby-2.2.2 --with-openssl-dir=`brew --prefix openssl`

[...大量rvm输出...]

pmorse$ ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'
OpenSSL 1.0.2h  3 May 2016

这应该会bundle再次变得更快,而无需您从httpshttp

于 2016-09-26T15:17:16.320 回答
2

一种开发人员友好的方法是使用更快的替代方法覆盖 gem 服务器。

在我们的例子中,我们可以配置http为镜像来解决慢速https连接:

bundle config mirror.https://rubygems.org http://rubygems.org

这允许您保留原始Gemfile配置,同时仍使用更快http的连接来获取 gem。

如果您想切换回https

bundle config --delete mirror.https://rubygems.org

bundle config有一个默认--global选项。您可以指定--local将配置限制为本地应用程序文件夹。

配置保存在 global~/.bundle/config和 local.bundle/config中。

于 2016-01-22T06:34:16.933 回答
1

我知道这可能是基本答案,但请尝试从 Ruby 主站点安装开发人员工具。我有一个类似的问题,它确实有效。有时简单的解决方案是最好的!

祝你好运!

于 2017-06-02T18:56:45.393 回答