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 .