Ruby on Rails
Uppgradera Rails
Sök…
Uppgradering från Rails 4.2 till Rails 5.0
Obs! Innan du uppgraderar din Rails-app ska du alltid spara din kod i ett versionskontrollsystem, till exempel Git.
För att uppgradera från Rails 4.2 till Rails 5.0 måste du använda Ruby 2.2.2 eller nyare. Efter att ha uppgraderat din Ruby-version om det behövs, gå till din Gemfile och ändra raden:
gem 'rails', '4.2.X'
till:
gem 'rails', '~> 5.0.0'
och på kommandoradskörningen:
$ bundle update
Kör nu uppdateringsuppgiften med kommandot:
$ rake rails:update
Detta hjälper dig att uppdatera konfigurationsfiler. Du blir ombedd att skriva över filer och du har flera alternativ att mata in:
- Y - ja, skriv över
- n - nej, skriv inte över
- a - alla, skriv över detta och alla andra
- q - sluta, avbryta
- d - diff, visa skillnaderna mellan det gamla och det nya
- h - hjälp
Normalt bör du kontrollera skillnaderna mellan de gamla och nya filerna för att se till att du inte får några oönskade ändringar.
Rails 5.0 ActiveRecord
modeller ärver från ApplicationRecord
, snarare än ActiveRecord::Base
. ApplicationRecord
är superklass för alla modeller, liknande hur ApplicationController
är superklass för styrenheter. För att redovisa det nya sättet på vilket modeller hanteras måste du skapa en fil i din app/models/
mapp som heter application_record.rb
och sedan redigera filens innehåll så att den är:
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
end
Rails 5.0 hanterar också återuppringningar något annorlunda. Återuppringningar som returnerar false
kommer inte att stoppa återuppringningskedjan, vilket innebär att efterföljande återuppringningar fortfarande kommer att köras, till skillnad från Rails 4.2. När du uppgraderar kvarstår beteendet Rails 4.2, men du kan byta till beteendet Rails 5.0 genom att lägga till:
ActiveSupport.halt_callback_chains_on_return_false = false
till filen config/application.rb
. Du kan uttryckligen stoppa återuppringningskedjan genom att ringa throw(:abort)
.
I Rails 5.0 kommer ActiveJob
att ärva från ApplicationJob
, snarare än ActiveJob::Base
som i Rails 4.2. För att uppgradera till Rails 5.0, skapa en fil som heter application_job.rb
i app/jobs/
mappen. Redigera filens innehåll för att vara:
class ApplicationJob < ActiveJob::Base
end
Då måste du ändra alla dina jobb för att ärva från ApplicationJob
snarare än ActiveJob::Base
.
En av de andra största förändringarna i Rails 5.0 kräver inga kodändringar, men kommer att ändra hur du använder kommandoraden med dina Rails-appar. Du kommer att kunna använda bin/rails
, eller bara rails
, för att köra uppgifter och tester. I stället för att använda $ rake db:migrate
kan du till exempel göra $ rails db:migrate
. Om du kör $ bin/rails
kan du se alla tillgängliga kommandon. Observera att många av de uppgifter som nu kan köras med bin/rails
fortfarande fungerar med rake
.