Ruby on Rails
Rails upgraden
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
.