Ho un'app Rails 3.0 (tecnicamente 3.0.7) che vorrei aggiornare a Rails 3.1 per utilizzare la nuova pipeline di asset e altre fantastiche nuove funzionalità. Qual è l'approccio migliore per farlo? Dovrei usare il generatore rails new
, quindi copiare tutto dalla mia vecchia app a quella nuova? Che ne pensi del controllo della versione? Ho già la mia vecchia app con Git.Come aggiornare un'applicazione Rails 3.0 a Rails 3.1?
risposta
appena aggiornato una delle mie applicazioni da 3.0.9 a 3.1.0, ecco il mio approccio, il tuo chilometraggio può variare:
Modifica Gemfile, cambiare Rails versione gioiello
gem 'rails', '3.1.0'
aggiunge anche nuove gemme introdotto in 3.1.0
group :assets do
gem 'sass-rails', "~> 3.1.0"
gem 'coffee-rails', "~> 3.1.0"
gem 'uglifier'
end
gem 'jquery-rails'
corsa bundle update rails
Poi eseguire rake rails:update
e risolvere i conflitti.
spostare il vostro css/javascript/immagini ecc per cartella app/assets
, assicurarsi che ci sia un application.js
e un file application.css
(si potrebbe desiderare di dare un'occhiata a quei due da appena creati 3.1.0 progetti)
Includere css/link JavaScript nel file di layout come questo
<%= stylesheet_link_tag "application" %>
<%= javascript_include_tag "application" %>
acquisire familiarità con le rotaie 3.1, ecco le risorse: http://jasonrudolph.com/blog/2011/06/06/helpful-resources-for-upgrading-to-rails-3-1/
La cosa più importante sono il test corrente, assicuratevi di avere una buona copertura di test del 3,0 app prima di iniziare.
Ho appena fatto questo oggi con un'app da 3.0.9 Date un'occhiata a questo blog, è piuttosto semplice.
http://davidjrice.co.uk/2011/05/25/how-to-upgrade-a-rails-application-to-version-3-1-0.html
Il suo solo una questione di cambiare file di gemma, alcune variabili di configurazione, spostando alcuni asset e la creazione di alcuni file manifesto CSS e JS, non dovrebbe richiedere più di un'ora.
Crea un nuovo ramo nel tuo repository Git.
Dai un'occhiata allo Rails 3.1 Example Apps se stai utilizzando Devise, RSpec o Cucumber perché ti daranno una buona implementazione di riferimento di lavoro. In caso contrario, basta usare rails new
per creare una semplice app Rails 3.1.
Quindi utilizzare uno strumento di confronto file (come FileMerge o Modifiche su Mac OS X) per identificare dove il codice di Rails 3.1 è diverso dall'app 3.0.
copia questo gemme al file gioiello che sostituisce il vecchio una volta gioiello 'rotaie', '3.1.0'
group :assets do
gem 'sass-rails', "~> 3.1.0"
gem 'coffee-rails', "~> 3.1.0"
gem 'uglifier'
end
Tutto quello che dovete fare è eseguire rake rails:update
è anche possibile eseguire rake -T
di vedere qualche compito rake fresco che si avrebbe bisogno
probabilmente sarebbe una buona idea per aggiornare RVM a l'ultima versione: 'rvm get latest' o eseguendo di nuovo lo script di installazione se RVM è troppo vecchio, quindi aggiorna RubyGems:' gem update --system', quindi aggiorna bundler: 'gem install bundler' – Andrew
Ho avuto alcuni conflitti quando ho eseguito 'bundle update rails' quindi ho dovuto eseguire' bundle update' invece – Andrew
Per quanto riguarda la directory assets Ho appena creato un'app fittizia 3.1 e ho copiato la struttura della directory delle risorse nella mia vecchia app – Andrew