Suche…


Upgrade von Rails 4.2 auf Rails 5.0

Hinweis: Speichern Sie Ihren Code vor dem Upgrade Ihrer Rails-App immer auf einem Versionskontrollsystem wie Git.


Um ein Upgrade von Rails 4.2 auf Rails 5.0 durchzuführen, müssen Sie Ruby 2.2.2 oder neuer verwenden. Wechseln Sie nach dem Upgrade Ihrer Ruby-Version bei Bedarf zu Ihrem Gemfile und ändern Sie die Zeile:

gem 'rails', '4.2.X'

zu:

gem 'rails', '~> 5.0.0'

und in der Befehlszeile ausführen:

$ bundle update

Führen Sie nun die Update-Aufgabe mit dem Befehl aus:

$ rake rails:update

Dies hilft Ihnen bei der Aktualisierung von Konfigurationsdateien. Sie werden aufgefordert, Dateien zu überschreiben, und Sie haben mehrere Eingabemöglichkeiten:

  • Y - ja, überschreiben
  • n - nein, nicht überschreiben
  • a - alle, überschreibe dies und alle anderen
  • q - beenden, abbrechen
  • d - diff, zeigt die Unterschiede zwischen dem alten und dem neuen
  • h - helfen

In der Regel sollten Sie die Unterschiede zwischen der alten und der neuen Datei überprüfen, um sicherzustellen, dass Sie keine unerwünschten Änderungen erhalten.

Rails 5.0 ActiveRecord Modelle erben von ApplicationRecord und nicht von ActiveRecord::Base . ApplicationRecord ist die Superklasse für alle Modelle, ähnlich wie ApplicationController die Superklasse für Controller ist. Um dieser neuen Art und Weise Rechnung zu tragen, wie Modelle behandelt werden, müssen Sie eine Datei mit dem Namen application_record.rb in Ihrem app/models/ -Ordner application_record.rb und dann den Inhalt dieser Datei wie folgt bearbeiten:

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

Rails 5.0 behandelt auch Rückrufe, die etwas anders sind. Callbacks, die false , stoppen die Callback-Kette nicht, was bedeutet, dass nachfolgende Callbacks im Gegensatz zu Rails 4.2 weiterhin ausgeführt werden. Wenn Sie ein Upgrade durchführen, bleibt das Verhalten von Rails 4.2 erhalten. Sie können jedoch zum Verhalten von Rails 5.0 wechseln, indem Sie Folgendes hinzufügen:

ActiveSupport.halt_callback_chains_on_return_false = false

in die Datei config/application.rb . Sie können die Callback-Kette explizit anhalten, indem Sie throw(:abort) aufrufen.

In Rails 5.0 erbt ActiveJob von ApplicationJob und nicht von ActiveJob::Base wie in Rails 4.2. Erstellen Sie zum Upgrade auf Rails 5.0 eine Datei mit dem Namen application_job.rb im Ordner app/jobs/ . Bearbeiten Sie den Inhalt dieser Datei wie folgt:

class ApplicationJob < ActiveJob::Base
end

Anschließend müssen Sie alle Jobs so ändern, dass sie von ApplicationJob anstelle von ActiveJob::Base erben.

Eine der anderen größten Änderungen von Rails 5.0 erfordert keine Codeänderungen, ändert jedoch die Art und Weise, wie Sie die Befehlszeile mit Ihren Rails-Apps verwenden. Sie können bin/rails oder nur rails , um Aufgaben und Tests auszuführen. Anstatt $ rake db:migrate , können Sie jetzt $ rails db:migrate . Wenn Sie $ bin/rails ausführen, können Sie alle verfügbaren Befehle anzeigen. Beachten Sie, dass viele der Aufgaben, die jetzt mit bin/rails weiterhin mit rake funktionieren.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow