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 .



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow