Регулярное выражение для исправления предупреждения об устаревании HTTP ActionController::TestCase.

Я обновляю приложение с rails 4 до rails 5. Я получаю ActionController::TestCase HTTP deprecation warning. Я знаю, как это исправить. Например, get :show, id: 1, email: [email protected] становится get :show, params: { id: 1, email: [email protected] }, но приложение датируется Rails 2 и имеет много-много экземпляров предупреждения в более чем 50 спецификациях контроллера. Я пытаюсь разработать регулярное выражение, работающее в Sublime Text, которое исправит большинство предупреждений. Моя первая попытка

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

Это работает во многих случаях, но терпит неудачу в следующих случаях

  • It does not work if the get goes over more than one line. If it does go over one line, then the preceding line ends in ,\n.
    • It does not work for put, create and the other http verbs
    • Это не работает, если есть другой тип ввода, например. headers.

Последний случай не так важен для меня, так как у меня их относительно немного, поэтому я могу исправить их вручную. Может ли кто-нибудь предложить инструкцию по поиску регулярных выражений и замене, которая исправит большинство случаев устаревания?


person Obromios    schedule 12.12.2016    source источник


Ответы (2)



Я придумал следующий процесс, который работает для многострочных и для разных http-глаголов. Это не работает для более сложных случаев, таких как использование информации header. Это двухэтапный процесс:

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

тогда

Find: params: { ,
then
params: { 

Это решило 95% моих предупреждений об устаревании.

person Obromios    schedule 15.12.2016