Ruby on Rails
Обновление рельсов
Поиск…
Обновление с Rails 4.2 до Rails 5.0
Примечание. Прежде чем обновлять приложение Rails, обязательно сохраните код в системе управления версиями, например Git.
Чтобы перейти с Rails 4.2 на Rails 5.0, вы должны использовать Ruby 2.2.2 или новее. После обновления вашей версии Ruby, если необходимо, перейдите в свой Gemfile и измените строку:
gem 'rails', '4.2.X'
чтобы:
gem 'rails', '~> 5.0.0'
и в командной строке:
$ bundle update
Теперь запустите задачу обновления с помощью команды:
$ rake rails:update
Это поможет вам обновить файлы конфигурации. Вам будет предложено перезаписать файлы, и у вас есть несколько вариантов ввода:
- Y - да, перезаписать
- n - нет, не перезаписывать
- a - все, перезаписать это и все остальные
- q - выйти, прервать
- d - diff, показать различия между старым и новым
- h - помощь
Как правило, вы должны проверить различия между старыми и новыми файлами, чтобы убедиться, что вы не получаете никаких нежелательных изменений.
Модели Rails 5.0 ActiveRecord
наследуются от ApplicationRecord
, а не ActiveRecord::Base
. ApplicationRecord
- это суперкласс для всех моделей, аналогичный тому, как ApplicationController
является суперклассом для контроллеров. Чтобы учесть этот новый способ обработки моделей, вы должны создать файл в своей папке app/models/
folder, называемый application_record.rb
а затем отредактировать содержимое этого файла:
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
end
Rails 5.0 также обрабатывает обратные вызовы несколько иначе. Обратные вызовы, возвращающие false
, не остановят цепочку обратного вызова, а это означает, что последующие обратные вызовы будут выполняться, в отличие от Rails 4.2. При обновлении поведение Rails 4.2 останется, хотя вы можете переключиться на поведение Rails 5.0, добавив:
ActiveSupport.halt_callback_chains_on_return_false = false
в файл config/application.rb
. Вы можете явно заблокировать цепочку обратного вызова, вызвав throw(:abort)
.
В Rails 5.0 ActiveJob
наследует от ApplicationJob
, а не ActiveJob::Base
как в Rails 4.2. Чтобы перейти на Rails 5.0, создайте файл application_job.rb
в папке app/jobs/
. Измените содержимое этого файла:
class ApplicationJob < ActiveJob::Base
end
Затем вы должны изменить все свои задания, чтобы наследовать от ApplicationJob
а не ActiveJob::Base
.
Одно из самых больших изменений Rails 5.0 не требует каких-либо изменений кода, но изменит способ использования командной строки с вашими приложениями Rails. Вы сможете использовать bin/rails
или просто rails
для запуска задач и тестов. Например, вместо использования $ rake db:migrate
теперь вы можете сделать $ rails db:migrate
. Если вы запустите $ bin/rails
, вы можете просмотреть все доступные команды. Обратите внимание, что многие задачи, которые теперь могут выполняться с bin/rails
все еще работают с использованием rake
.