Ruby on Rails
Rails aufrüsten
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.