Поиск…


Обновление с 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 .



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow