Ruby on Rails
Aktualizacja szyn
Szukaj…
Aktualizacja z Rails 4.2 do Rails 5.0
Uwaga: przed aktualizacją aplikacji Railsowej zawsze pamiętaj o zapisaniu kodu w systemie kontroli wersji, takim jak Git.
Aby dokonać aktualizacji z Rails 4.2 do Rails 5.0, musisz używać Ruby 2.2.2 lub nowszej wersji. Po uaktualnieniu wersji Ruby, jeśli to konieczne, przejdź do pliku Gemfile i zmień wiersz:
gem 'rails', '4.2.X'
do:
gem 'rails', '~> 5.0.0'
i w linii poleceń uruchom:
$ bundle update
Teraz uruchom zadanie aktualizacji za pomocą polecenia:
$ rake rails:update
Pomoże to zaktualizować pliki konfiguracyjne. Zostaniesz poproszony o zastąpienie plików i masz kilka opcji do wprowadzenia:
- T - tak, zastąp
- n - nie, nie zastępuj
- a - wszyscy, zastąpcie to i wszystkie inne
- q - wyjdź, przerwij
- d - diff, pokaż różnice między starym a nowym
- h - pomoc
Zazwyczaj powinieneś sprawdzić różnice między starymi i nowymi plikami, aby upewnić się, że nie otrzymujesz niepożądanych zmian.
Modele ActiveRecord
Railsach 5.0 dziedziczą z ApplicationRecord
, a nie ActiveRecord::Base
. ApplicationRecord
jest nadklasą dla wszystkich modeli, podobnie jak ApplicationController
jest nadklasą dla kontrolerów. Aby uwzględnić nowy sposób obsługi modeli, musisz utworzyć plik w folderze app/models/
nazwie application_record.rb
a następnie edytować zawartość tego pliku, aby:
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
end
Railsy 5.0 również nieco inaczej obsługują wywołania zwrotne. Oddzwanianie zwracające wartość false
nie zatrzyma łańcucha oddzwaniania, co oznacza, że kolejne oddzwaniania będą nadal działać, w przeciwieństwie do Rails 4.2. Po uaktualnieniu zachowanie Rails 4.2 pozostanie, chociaż możesz przełączyć się na zachowanie Rails 5.0, dodając:
ActiveSupport.halt_callback_chains_on_return_false = false
do pliku config/application.rb
. Możesz jawnie zatrzymać łańcuch oddzwaniania, wywołując throw(:abort)
.
W Rails 5.0 ActiveJob
odziedziczy po ApplicationJob
, a nie ActiveJob::Base
jak w Rails 4.2. Aby uaktualnić do Rails 5.0, utwórz plik o nazwie application_job.rb
w folderze app/jobs/
. Edytuj zawartość tego pliku, aby:
class ApplicationJob < ActiveJob::Base
end
Następnie musisz zmienić wszystkie zadania, aby dziedziczyły z ApplicationJob
a nie ActiveJob::Base
.
Jedna z innych największych zmian w Rails 5.0 nie wymaga żadnych zmian kodu, ale zmieni sposób korzystania z wiersza poleceń w aplikacjach Rails. Będziesz mógł używać bin/rails
, lub po prostu rails
, do uruchamiania zadań i testów. Na przykład, zamiast używać $ rake db:migrate
, możesz teraz zrobić $ rails db:migrate
. Jeśli uruchomisz $ bin/rails
, możesz wyświetlić wszystkie dostępne polecenia. Zauważ, że wiele zadań, które można teraz uruchomić z bin/rails
nadal działa przy użyciu rake
.