Zoeken…


Opwaarderen van Rails 4.2 naar Rails 5.0

Opmerking: zorg er altijd voor dat u uw code opslaat op een versiebeheersysteem, zoals Git, voordat u uw Rails-app opwaardeert.


Om te upgraden van Rails 4.2 naar Rails 5.0, moet u Ruby 2.2.2 of nieuwer gebruiken. Na het upgraden van uw Ruby-versie indien nodig, gaat u naar uw Gemfile en wijzigt u de regel:

gem 'rails', '4.2.X'

naar:

gem 'rails', '~> 5.0.0'

en voer op de opdrachtregel uit:

$ bundle update

Voer nu de update-taak uit met behulp van de opdracht:

$ rake rails:update

Dit zal u helpen om configuratiebestanden bij te werken. U wordt gevraagd om bestanden te overschrijven en u hebt verschillende opties om in te voeren:

  • Y - ja, overschrijven
  • n - nee, niet overschrijven
  • a - alles, overschrijf dit en alle anderen
  • q - stoppen, afbreken
  • d - diff, toon de verschillen tussen het oude en het nieuwe
  • h - help

Meestal moet u de verschillen tussen de oude en nieuwe bestanden controleren om ervoor te zorgen dat u geen ongewenste wijzigingen ontvangt.

Rails 5.0 ActiveRecord modellen erven van ApplicationRecord , in plaats van ActiveRecord::Base . ApplicationRecord is de superklasse voor alle modellen, vergelijkbaar met hoe ApplicationController de superklasse is voor controllers. Om rekening te houden met deze nieuwe manier waarop modellen worden verwerkt, moet u een bestand in uw app/models/ map met de naam application_record.rb en vervolgens de inhoud van dat bestand bewerken om:

class ApplicationRecord < ActiveRecord::Base
  self.abstract_class = true
end

Rails 5.0 verwerkt ook callbacks iets anders. Terugbelacties die false terugkeren, zullen de terugbelketen niet stoppen, wat betekent dat terugbelverzoeken nog steeds worden uitgevoerd, in tegenstelling tot Rails 4.2. Wanneer u een upgrade uitvoert, blijft het gedrag van Rails 4.2 behouden, hoewel u kunt overschakelen naar het gedrag van Rails 5.0 door het volgende toe te voegen:

ActiveSupport.halt_callback_chains_on_return_false = false

naar het bestand config/application.rb . U kunt de callback-keten expliciet stoppen door throw(:abort) aan te roepen.

In Rails 5.0 zal ActiveJob erven van ApplicationJob , in plaats van ActiveJob::Base zoals in Rails 4.2. Om te upgraden naar Rails 5.0, maakt u een bestand met de naam application_job.rb in de app/jobs/ map. Bewerk de inhoud van dat bestand als volgt:

class ApplicationJob < ActiveJob::Base
end

Vervolgens moet u al uw taken wijzigen om over te nemen van ApplicationJob plaats van ActiveJob::Base .

Een van de andere grootste wijzigingen van Rails 5.0 vereist geen codewijzigingen, maar zal de manier veranderen waarop u de opdrachtregel gebruikt met uw Rails-apps. U kunt bin/rails of alleen rails gebruiken om taken en tests uit te voeren. In plaats van $ rake db:migrate , kunt u nu $ rails db:migrate . Als u $ bin/rails uitvoert, kunt u alle beschikbare opdrachten bekijken. Merk op dat veel van de taken die nu kunnen worden uitgevoerd met bin/rails nog steeds werken met rake .



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow