我正在将应用从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 : \1 params: { \2 }
这在许多情况下有效,但在以下方面失败
get
超过一行,则无效。如果确实超过一行,则前一行以,\n
结尾。
put
,create
和其他http动词headers
。最后一个案例对我来说并不重要,因为我的这些案例相对较少,所以可以手动修复这些案例。有人可以建议使用find regex和Replace指令修复大多数弃用案例吗?
答案 0 :(得分:1)
我遇到了同样的问题,但我没有使用正则表达式,而是使用了Rubocop的Autofix功能:
http://rubocop.readthedocs.io/en/latest/cops_rails/#railshttppositionalarguments
> bundle exec rubocop --rails --only HttpPositionalArguments --auto-correct
修复了大量这些弃用警告,但没有造成任何语法错误。
请务必设置TargetRailsVersion: 5.0
或更高,以启用该警察。
答案 1 :(得分:0)
我提出了以下适用于多行和不同http动词的过程。它不适用于更复杂的情况,例如使用header
信息。这是一个两步过程:
Find: (get|post|put|patch|delete)( :\w+)((?:,\n?[^\n,]+)+)
Replace: \1\2, params: { \3 }
然后
Find: params: { ,
then
params: {
这解决了95%的弃用警告。