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
这将帮助您更新配置文件。系统将提示您覆盖文件,并且有几个输入选项:
是–是,覆盖
n –不,请勿覆盖
一个–全部,覆盖此和所有其他
q –退出,中止
d – diff,显示新旧之间的差异
h –帮助
通常,您应该检查新旧文件之间的差异,以确保没有不必要的更改。
Rails 5.0ActiveRecord模型继承自ApplicationRecord,而不是ActiveRecord::Base。ApplicationRecord是所有模型的超类,类似于ApplicationController控制器的超类。为了说明这种新的模型处理方式,您必须在app/models/名为的文件夹中创建一个文件application_record.rb,然后将该文件的内容编辑为:
class ApplicationRecord < ActiveRecord::Baseself.abstract_class= true
end
Rails 5.0处理的回调也略有不同。返回false的回调不会停止回调链,这意味着后续的回调仍将运行,这与Rails 4.2不同。升级时,尽管可以通过添加以下内容切换到Rails 5.0行为,但Rails 4.2行为将保留。
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::Baseend
然后,您必须将所有作业更改为从而ApplicationJob不是从继承ActiveJob::Base。
Rails 5.0的另一个最大变化之一是不需要任何代码更改,但会更改您在Rails应用程序中使用命令行的方式。您将能够使用bin/rails或仅rails运行任务和测试。例如,$rake db:migrate现在可以使用代替使用$rails db:migrate。如果运行$bin/rails,则可以查看所有可用命令。请注意,现在可以使用运行的许多任务bin/rails仍然可以使用rake。
以上是 Ruby on Rails 从Rails 4.2升级到Rails 5.0 的全部内容, 来源链接: utcz.com/z/326289.html