2013-03-11 27 views
32

Tôi vừa cài đặt RVM, Ruby, Rails, v.v. trên ubuntu ảo 12.04 32bit của tôi đang chạy trong hộp ảo. Bây giờ tôi gặp phải vấn đề cho dự án đường ray đầu tiên của tôi bundle install hoặc bundle update mất rất nhiều thời gian. Ngay cả khi tôi tạo một dự án mới với đường ray (bao gồm bundle install).ruby ​​- bó cài đặt/cập nhật quá chậm

tôi chỉ sử dụng đá quý tiêu chuẩn:

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' 

tôi đã cố gắng bó cài đặt mà không cần bất kỳ đá quý nhưng gem 'rails', '3.2.12'. Sau đó tôi gõ lại bundle install với tất cả các đá quý trong gemfile của tôi. Tôi mất 10 phút để kiểm tra sự phụ thuộc. Đầu ra của --verbose là kết hợp của HTTP successHTTP redirection.

Rails phiên bản: Rails 3.2.12

của Ruby phiên bản: ruby ​​1.9.3p392 (2013/02/22 sửa đổi 39386)

RVM: RVM 1.18.18

bó phiên bản: phiên bản Bundler 1.3.2

Tôi đã tìm kiếm một giải pháp, nhưng không có gì hữu ích.

+3

Bật lại tường lửa của bạn. – sscirrus

+1

1. đảm bảo không có tường lửa hoặc poxy liên quan 2. kiểm tra cài đặt dns của bạn, tức là thiết lập googles dns server (8.8.8.8), hãy chắc chắn để loại bỏ bất kỳ tên miền tìm kiếm 3. cố gắng sử dụng http: // thay vì https: // – reto

+2

bạn chạy một hệ thống chống vi-rút trên máy chủ Linux? Loại bỏ điều đó và đảm bảo rằng phần mềm của bạn là up2date. – reto

Trả lời

39

Thay đổi https thành http trong số Gemfile đã làm điều kỳ diệu. Trước khi tôi phải tạo dự án với rails new APP --skip-bundle

Tôi muốn cảnh báo ở đây, có mục đích bảo mật khi sử dụng https trên http. Hãy thử lúc đầu các câu trả lời khác được đề cập trong chủ đề này.

+3

Tôi đã có cùng một vấn đề trên OS X với Rails 4 beta 1 và Ruby 2 và điều này cố định nó. Thay đổi https thành http tăng tốc độ "cài đặt nhóm" khoảng 5 lần - từ đau (phút) đến tuyệt vời (<20 giây). Sự chậm lại chính dường như là "Lấy siêu dữ liệu đá quý từ phần http: //rubygems.org/...........". – Nick

+17

Tại sao SSL làm cho Bundler quá chậm? – Lee

+1

Một nửa số Gemfile của tôi đã được thực hiện trong 1 giờ ... Sau khi sử dụng theo cách này, nó chỉ mất 5 phút ... CẢM ƠN BẠN để tiết kiệm đêm của tôi! Nhưng tôi không hiểu những gì hack là sai với Ubumntu và rubygems? – scaryguy

13

Bundler chỉ got an update xử lý song song đá quý.

gem install bundler --pre 

sẽ giải quyết vấn đề theo cách tốt nhất có thể cho bây giờ.

Source

2

Bạn cũng có thể sử dụng nhiều công ăn việc làm, nó có thể cải thiện một chút

bundle install --jobs 8 

Dưới đây là một tutorial về nó

2

Một nhà phát triển phương pháp thân thiện là để ghi đè lên các máy chủ đá quý với một giải pháp thay thế nhanh hơn.

Trong trường hợp của chúng tôi, chúng tôi có thể cấu hình http như một tấm gương để giải quyết chậm https kết nối:

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

này cho phép bạn để giữ gốc Gemfile cấu hình trong khi vẫn sử dụng nhanh hơn http kết nối để lấy đá quý.

Nếu bạn muốn chuyển về https:

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

bundle config có một tùy chọn mặc định --global.Bạn có thể chỉ định --local để giới hạn cấu hình cho thư mục ứng dụng cục bộ.

Cấu hình được lưu vào toàn cầu ~/.bundle/config và địa phương .bundle/config.

+0

Điều này sẽ có cùng các vấn đề về bảo mật như các câu trả lời khác đề xuất thay thế https bằng http trong Gemfile, vì vậy hãy nhận biết rủi ro nếu bạn làm theo. – pjmorse

+0

@pjmorse bạn đang vô hiệu hóa tất cả các câu trả lời trong khi không thêm nhiều giá trị. Như tôi đã lưu ý, https vẫn còn https, http được sử dụng trong phần phụ trợ như một tấm gương. Rõ ràng là chúng tôi đang thay thế https bằng hành động với http và vì vậy chúng tôi phải ở trong một môi trường đáng tin cậy. Tất cả https đề cập trong các tệp vẫn là https nên không có nguy cơ bảo mật nếu mã được di chuyển đến nơi khác. –

+0

Câu trả lời của bạn là một giải pháp hợp lệ cho câu hỏi - đó là lý do tại sao tôi không downvote nó - nhưng nếu bạn đang tìm kiếm đá quý trên http bạn đang tăng nguy cơ của bạn, cho dù bạn thay đổi giao thức trong gemfile của bạn hoặc thay đổi cấu hình gương. Devs chọn chiến lược này nên làm như vậy với đôi mắt mở. – pjmorse

4

Bundler v1.12.x được phát hành vào năm 2016 và khiến một số người dùng gặp phải slow bundle install issues.

In this instance staying with v1.11.2 is the best option (it's fast) until a fix is released.

Có giá trị hướng đến Rubygems.org để thử các phiên bản khác nhau của đá quý bundler.

Kiểm tra phiên bản bundler hiện có, phiên bản hiện gỡ bỏ cài đặt, cài đặt phiên bản 1.11.2 Ví dụ:

gem list | grep bundler 

gem uninstall bundler -v existing-version-number 

gem install bundler -v 1.11.2 
+1

Có vẻ như điều này đã được khắc phục ngay bây giờ, sự cố liên kết đã bị đóng. – mahemoff

2

Nếu bạn vẫn thấy vấn đề này với Bundler 1.12.5, bạn có thể muốn try updating the OpenSSL used by your Ruby.

Đối với tôi đây đã đi như vậy:

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] 

[... chi tiết brew đầu ra ...]

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

[... rất nhiều rvm đầu ra ...]

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

Điều này sẽ làm cho nhanh hơn bundle mà không yêu cầu bạn phải đi từ https đến http.

0

Tôi biết đây có thể là câu trả lời cơ bản nhưng hãy thử cài đặt công cụ nhà phát triển từ trang web chính của Ruby. Tôi đã có một vấn đề tương tự và nó đã làm việc. Đôi khi các giải pháp đơn giản là tốt nhất!

Chúc may mắn!

Các vấn đề liên quan