Ruby on Rails Aggiornamento da Rails 4.2 a Rails 5.0


Esempio

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 .