修复 ActionController::TestCase HTTP 弃用警告的正则表达式

A regex to fix the ActionController::TestCase HTTP deprecation warning

我正在将应用程序从 rails 4 升级到 rails 5。我正在获取 ActionController::TestCase HTTP deprecation warning。我知道如何解决它。例如,get :show, id: 1, email: o@o.com 变成了 get :show, params: { id: 1, email: o@o.com },但该应用程序的日期是 rails 2,并且在 50 多个控制器规格中有很多很多警告实例。我正在尝试开发一个适用于 Sublime Text 的正则表达式,它将修复大部分警告。我的第一次尝试是

Find: (get :[\w]*,)([^\n]*)
Replace :  params: {  }

这在很多情况下都有效,但在以下方面会失败

最后一个案例对我来说并不那么重要,因为我的此类案例相对较少,因此可以手动修复。有人可以建议可以修复大多数弃用案例的查找正则表达式和替换指令吗?

我提出了以下适用于多行和不同 http 动词的过程。它不适用于更复杂的情况,例如使用 header 信息。这是一个两步过程:

Find: (get|post|put|patch|delete)( :\w+)((?:,\n?[^\n,]+)+)
Replace: , params: {  }

然后

Find: params: { ,
then
params: { 

这解决了我 95% 的弃用警告。

我遇到了同样的问题,但我没有使用 Regex,而是使用了 Rubocop 的自动修复功能:

http://rubocop.readthedocs.io/en/latest/cops_rails/#railshttppositionalarguments

> bundle exec rubocop --rails --only HttpPositionalArguments --auto-correct

修复了大量此类弃用警告,而没有导致任何语法错误。 请记住设置 TargetRailsVersion: 5.0 或更高,以启用该警察。