2013-02-24 4 views
16

Rubino 2.0 è stato rilasciato, si veda:Configurazione Rails per Ruby 2.0

http://www.ruby-lang.org/en/news/2013/02/24/ruby-2-0-0-p0-is-released/

Cosa cambia al mio Rails app/installazione devo anticipare fare dopo l'aggiornamento il mio sistema a Ruby 2.0?

+1

Sembra che non ci sia un grande elenco di rotture, l'aggiornamento ora per vedere come funziona un'applicazione di rails dal vivo. – Cluster

+7

Invece di chiederci di prevedere qualsiasi potenziale ostacolo, vai all'aggiornamento e provalo. Chiedi qui se hai bisogno di aiuto per risolvere problemi specifici. Non sappiamo quale versione di Rails o quali gemme stai usando. – Substantial

risposta

16

Quindi, ecco cosa dovevo fare dopo l'aggiornamento.

Bundler 1.2.x non è compatibile, genera un errore che dice di aggiornare a> = 1.3, che non è ancora stato rilasciato. Quindi, se stai usando RVM, entra nel tuo gemset globale per il ruby ​​2.0 e passa alla versione 1.3.pre fino a quando la versione 1.3.0 non viene rilasciata. Inoltre sembra che ci sia qualcosa con l'API dei rubygems. La mia installazione di bundle non utilizzava la nuova API, ma faceva il vecchio metodo 'fetch index', che ovviamente richiede un po 'più di tempo.

A parte questo, il mio pacchetto è stato installato in modo pulito e il mio set completo di test delle specifiche è stato completato con tutto OK. Ho fatto alcuni test di temporizzazione per vedere quanto è migliorato il tempo di caricamento dei binari.

# Using 1.9.3-p327 

RSpec Time: 24.87s 
Wall Time : 34.40s 
Load Time : 9.53s 

# Using 2.0.0-p0 

RSpec Time: 22.49s (90.4%) 
Wall Time : 26.89s (78.2%) 
Load Time : 4.4s (46.2%) 

Ovviamente il tempo di caricamento per rspec è un po 'più pesante con tutte le gemme di prova, ma ancora più di un calo del 50% nel tempo di caricamento e una riduzione del 10% del tempo di prova è piacevole.

Ho eseguito un test simile utilizzando rails runner 'puts User.count' che saltava il bootstrap di prova.

1.9.3 : 7.27s 
2.0.0 : 3.36s (46.2%) 

Anche in questo caso, un bel calo di oltre il 50% :)

Tipo di ottenere fuori pista qui ... nuovi giocattoli che fanno credo, ma sembra che l'unico cambiamento che ho dovuto fare è stato l'aggiornamento ad un bundler pre-rilascio.

Ecco un altro test di diversi iteratori

$ rvm 1.9.3-p327,2.0.0-p0 --verbose do ruby test.rb 
ruby-1.9.3-p327: ruby 1.9.3p327 (2012-11-10 revision 37606) [i686-linux] 
     user  system  total  real 
for 0.610000 0.000000 0.610000 ( 0.607189) 
times 0.580000 0.000000 0.580000 ( 0.587303) 
upto 0.590000 0.000000 0.590000 ( 0.585730) 
each 0.590000 0.000000 0.590000 ( 0.593494) 
ruby-2.0.0-p0: ruby 2.0.0p0 (2013-02-24 revision 39474) [i686-linux] 
     user  system  total  real 
for 0.590000 0.000000 0.590000 ( 0.582743) 
times 0.560000 0.000000 0.560000 ( 0.565961) 
upto 0.560000 0.000000 0.560000 ( 0.562400) 
each 0.570000 0.000000 0.570000 ( 0.573469) 

marginali, circa un aumento di 4-5%.

Più interessante è questo, chiamando Object.new 500 milioni di volte

1.9.3 : 129.063s 
2.0.0 : 97.234s 

A proposito di un calo del 25% nel momento della creazione dell'oggetto.

+0

"salta nella tua gemst globale per il 2.0", è il gemfile delle app? O è qualcosa di separato? Recentemente ho iniziato a utilizzare RVM. Grazie per l'intuizione! –

+0

Trovato. In .RVM/gemsets. http://stackoverflow.com/questions/4007171/how-do-i-use-rvm-and-create-globally-available-gems –

+1

Giusto, RVM ha un gemst globale per ogni rubino installato. È dove installa bundler, rake e rvm stesso. Inoltre mi piace installare gemme come pry/hub/debugger in modo che siano disponibili ovunque. – Cluster

6

Ho avviato un nuovo progetto con rails 4 e ruby ​​2.0. Questo è come l'ho fatto.

Prima di tutto, ho impostato RVM su Ruby 2.0.

poi installato bundler 1.3:

$ gem install bundler 

Aggiornato queste gemme e 'bundle install'.

gem 'rails',  :git => 'git://github.com/rails/rails.git' 
gem 'journey', :git => 'git://github.com/rails/journey.git' 
gem 'arel',  :git => 'git://github.com/rails/arel.git' 

group :assets do 
    gem 'sass-rails', :git => 'git://github.com/rails/sass-rails.git' 
    gem 'coffee-rails', :git => 'git://github.com/rails/coffee-rails.git' 
end