Ruby on Rails
Aggiornamento di Rails
Ricerca…
Aggiornamento da Rails 4.2 a Rails 5.0
Nota: prima di aggiornare l'app Rails, assicurati sempre di salvare il codice su un sistema di controllo versione, come Git.
Per eseguire l'aggiornamento da Rails 4.2 a Rails 5.0, è necessario utilizzare Ruby 2.2.2 o versione successiva. Dopo aver aggiornato la tua versione di Ruby, se necessario, vai al tuo Gemfile e cambia linea:
gem 'rails', '4.2.X'
a:
gem 'rails', '~> 5.0.0'
e sulla riga di comando eseguire:
$ bundle update
Ora esegui l'attività di aggiornamento usando il comando:
$ rake rails:update
Questo ti aiuterà ad aggiornare i file di configurazione. Ti verrà richiesto di sovrascrivere i file e hai diverse opzioni da inserire:
- Sì, sì, sovrascrivi
- n - no, non sovrascrivere
- a - tutto, sovrascrivi questo e tutti gli altri
- q - esci, abortisci
- d - diff, mostra le differenze tra il vecchio e il nuovo
- h - aiuto
In genere, è necessario verificare le differenze tra i file vecchi e quelli nuovi per assicurarsi che non vengano apportate modifiche indesiderate.
Rails 5.0 I modelli ActiveRecord
ereditano da ApplicationRecord
, piuttosto che ActiveRecord::Base
. ApplicationRecord
è la superclasse per tutti i modelli, simile a come ApplicationController
è la superclasse per i controller. Per tenere conto di questo nuovo modo in cui i modelli sono gestiti, devi creare un file nella tua app/models/
cartella chiamata application_record.rb
e quindi modificare il contenuto di quel file in modo che sia:
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
end
Rails 5.0 gestisce anche i callback leggermente diversi. Le callback che restituiscono false
non fermeranno la catena di callback, il che significa che i callback successivi continueranno a essere eseguiti, diversamente da Rails 4.2. Quando esegui l'upgrade, il comportamento di Rails 4.2 rimarrà, sebbene tu possa passare al comportamento di Rails 5.0 aggiungendo:
ActiveSupport.halt_callback_chains_on_return_false = false
nel file config/application.rb
. È possibile interrompere esplicitamente la catena di callback chiamando throw(:abort)
.
In Rails 5.0, ActiveJob
erediterà da ApplicationJob
, piuttosto che ActiveJob::Base
come in Rails 4.2. Per eseguire l'aggiornamento a Rails 5.0, creare un file chiamato application_job.rb
nella cartella app/jobs/
. Modifica i contenuti di quel file come:
class ApplicationJob < ActiveJob::Base
end
Quindi, è necessario modificare tutti i processi in modo che ActiveJob::Base
ereditati da ApplicationJob
anziché ActiveJob::Base
.
Uno degli altri più grandi cambiamenti di Rails 5.0 non richiede modifiche al codice, ma cambierà il modo in cui usi la riga di comando con le tue app Rails. Sarai in grado di utilizzare bin/rails
o solo rails
per eseguire attività e test. Ad esempio, invece di utilizzare $ rake db:migrate
, ora puoi eseguire $ rails db:migrate
. Se si esegue $ bin/rails
, è possibile visualizzare tutti i comandi disponibili. Nota che molte delle attività che ora possono essere eseguite con bin/rails
funzionano ancora utilizzando rake
.