2013-03-11 23 views
32

Ho appena installato RVM, Ruby, Rails ecc. Sul mio Ubuntu virtuale 12.04 32 bit in esecuzione in una virtualbox. Ora ho riscontrato il problema che per il mio primo progetto di binari bundle install o bundle update richiede molto tempo. Anche quando creo un nuovo progetto con rotaie (che include bundle install).ruby ​​- bundle install/update troppo lento

Uso soltanto le gemme normali:

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' 

Ho provato bundle install senza gemme ma gem 'rails', '3.2.12'. Dopo di che ho digitato di nuovo bundle install con tutte le gemme nel mio gemfile. Mi ci sono voluti 10 minuti per verificare le dipendenze. L'output di --verbose è un mix di HTTP success e HTTP redirection. Versione

Rails: Rotaie 3.2.12

versione di Ruby: ruby ​​1.9.3p392 (2013/02/22 revisione 39386)

RVM: rvm 1.18.18

versione del bundle: versione Bundler 1.3.2

Ho già cercato una soluzione, ma nulla ha aiutato.

+3

Riaccendi il firewall. – sscirrus

+1

1. assicurati che non ci siano firewall o poxy coinvolti 2. Controlla le tue impostazioni dns, es. Server dns di setup googles (8.8.8.8), assicurati di rimuovere qualsiasi dominio di ricerca 3. prova ad usare http: // invece di https: // – reto

+2

si esegue un sistema antivirus su un server linux? Rimuovilo e assicurati che il tuo software sia up2date. – reto

risposta

39

Cambiare https a http nel mio Gemfile ha fatto la magia. Prima di dover creare il progetto con rails new APP --skip-bundle

Voglio avvertire qui che esiste uno scopo di sicurezza per l'utilizzo di https su http. Prova in un primo momento le altre risposte menzionate in questo thread.

+3

Ho avuto lo stesso problema su OS X con Rails 4 beta 1 e Ruby 2 e questo l'ha risolto. Il passaggio da https a http ha aumentato la velocità di "installazione bundle" di circa 5 volte, da doloroso (minuti) a grande (<20 secondi). Il rallentamento principale sembra essere "Recupero dei metadati della gemma dalla parte http: //rubygems.org/...........". – Nick

+17

Perché SSL rende Bundler così lento? – Lee

+1

La metà del mio file Gem è stata eseguita per 1 ora ... Dopo aver usato in questo modo, sono bastati 5 minuti ... GRAZIE per aver salvato la mia notte! Ma non capisco che cosa abbia sbagliato l'Ubumntu e i rubygems? – scaryguy

13

Bundler solo got an update di elaborazione parallela di gemme.

gem install bundler --pre 

risolverà il problema nel miglior modo possibile per ora.

Source

2

È inoltre possibile utilizzare più posti di lavoro, si può migliorare un po '

bundle install --jobs 8 

Ecco un tutorial su di esso

2

Uno sviluppatore metodo amichevole è per ignorare il server gioiello con un'alternativa più veloce.

Nel nostro caso, possiamo configurare http come uno specchio per affrontare lente https connessioni:

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

Questo consente di mantenere la configurazione originale Gemfile pur utilizzando più veloce http collegamenti per andare a prendere le gemme.

Se si voleva tornare alla https:

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

bundle config ha un opzione di default --global.È possibile specificare --local per limitare le configurazioni alla cartella dell'applicazione locale.

La configurazione viene salvata in globale ~/.bundle/config e locale .bundle/config.

+0

Questo avrà gli stessi problemi di sicurezza di altre risposte che suggeriscono di sostituire https con http nel Gemfile, quindi sii consapevole del rischio se segui questo. – pjmorse

+0

@pjmorse stai invalidando tutte le risposte senza aggiungere molto valore. Come ho notato, https rimane ancora https, http è usato nel backend come mirror. È evidente che stiamo sostituendo https in azione con http e quindi dovremmo trovarci in un ambiente fidato. Tutti i riferimenti https nei file rimangono https quindi non c'è alcun rischio per la sicurezza se il codice viene spostato da qualche altra parte. –

+0

La tua risposta è una soluzione valida alla domanda - è per questo che non l'ho sottovalutata - ma se stai recuperando le gemme su http stai aumentando il rischio, che tu cambi il protocollo nel tuo gemfile o cambi la configurazione del mirror. Gli sviluppatori che scelgono questa strategia dovrebbero farlo con gli occhi aperti. – pjmorse

4

Bundler v1.12.x è stato rilasciato nel 2016 e ha causato alcuni utenti nell'esperienza slow bundle install issues.

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

Vale la pena di dirigersi verso Rubygems.org per provare diverse versioni del gioiello Bundler.

Controlla versioni Bundler esistente, disinstallare la versione esistente, installare la versione 1.11.2 esempio:

gem list | grep bundler 

gem uninstall bundler -v existing-version-number 

gem install bundler -v 1.11.2 
+1

Sembra che ora sia stato risolto, che il problema collegato è stato chiuso. – mahemoff

2

Se stai ancora vedendo questo problema con Bundler 1.12.5, si consiglia di try updating the OpenSSL used by your Ruby.

Per me questo è andato in questo modo:

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] 

[... altro brew uscita ...]

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

[... un sacco di rvm uscita ...]

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

Questo dovrebbe rendere bundle più veloce di nuovo senza che sia necessario passare da https a http.

0

So che questa può essere una risposta di base ma provare a installare gli strumenti di sviluppo dal sito principale di Ruby. Ho avuto un problema simile e ha funzionato. A volte le soluzioni semplici sono le migliori!

Buona fortuna!

Problemi correlati