如何轨了解应用程序和盾反当前更新变化的过去版本

问题描述 投票:0回答:1

该帖子是只是为了了解轨道是如何理解我的应用程序的过去版本,并保护它针对当前重大更改。

> 5.0 - 最近,我们从4.2+升级我们的应用程序。一个Rails所用Rails 5实现的变化是throw(:abort)回调打破链使用before_*的(如果有任何时候需要有)和使用false会根本没有副作用(即没有回调链的时候会使用中止false)(请大家注意这一点)

但这里一个陷阱。如果你读这this明确指出,如果从4.2 -> 5.0升级return false回调内部before_*仍然是可行的。(有警告,但将工作)

所以这里的更新后,我的问题时,我有滑轨,AR和AS宝石5.0.0.1版本锁住了我的Gemfile.lock的,怎么做的Rails知道,我已经从4.2升级的应用程序,它有尊重在return false声明它不会,如果你在创建的Rails 5.0新的应用程序,它的before_ *回调

源代码可能的链接也将有所帮助。

ruby-on-rails ruby-on-rails-5
1个回答
0
投票

答(快速方式,以确保升级兼容性):

答(详细的方式来了解发生了什么变化):

  1. 转至发行说明。即https://guides.rubyonrails.org/5_0_release_notes.html
  2. 转至Deprecations部分,或者如果你已经知道了一些变化,然后找到该网页上(即查找文本"throw(:abort)"
  3. 点击"Pull Request" link
  4. 然后点击该"Files Changed" tab
  5. 然后读取所有的CHANGELOG.md文件;我引用(并回答你的问题): Callbacks::CallbackChain.halt_and_display_warning_on_return_false设置为true,将让应用程序支持返回false停止回调链的过时的方式。 该值设置为false将告诉应用程序无视回调返回的任何false值,并且仅在throw(:abort)停止链。 该值也可以与Rails配置选项设置config.active_support.halt_callback_chains_on_return_false。 当缺少配置选项,它的价值是true,这么大年纪的应用程序移植到Rails 5.0将不会打破(但显示弃用警告)。对于新的Rails应用程序5.0,它的值设置在初始化到false,所以这些应用程序将默认支持新的行为

关于你提到的有关重大更改的关注,这是很好的记住:

铁轨似乎使用不同版本的“语义版本”的:

我从@rafaelfranca here引述如下:

X.Y.Z

ž - bug修正,没有发生API更改。

Ÿ - 新特性,可以含有API的变化。

X - 新功能,将包含API的变化。只是在碰到特殊的场合

我引述@ robin850 here

当Y被增加有可能是不建议使用的功能,但他们仍然可用,但是当它再次递增,这些功能可能不存在了(例如Numeric#ago在4.0可用,弃用在4.1和去除4.2)。

就个人而言,我使用标准“语义版本”,让开发了我的宝石

  • 任何X变化意味着非向后兼容的改变,这取决于我的项目/代码可能不会再工作
  • 而任何Ÿ改变是向后兼容的“功能”的转变
  • 而任何Z改变通常只是轻微的bug修复。

这就是为什么如果你做一个rails new some_project,然后检查了Gemfile,你会看到gem 'rails', '~> 5.2.2'。因为如果是Rails的“语义版本”,它反而会看起来像gem 'rails', '~> 5.2'

© www.soinside.com 2019 - 2024. All rights reserved.