2016-12-12 1 views
0

Ich aktualisiere eine App von Schienen 4 auf Schienen 5. Ich bekomme die ActionController::TestCase HTTP deprecation warning. Ich weiß, wie ich es beheben kann. Zum Beispiel get :show, id: 1, email: [email protected] wird get :show, params: { id: 1, email: [email protected] }, aber die App stammt aus Schienen 2 und hat viele, viele Instanzen der Warnung in über 50 Controller-Spezifikationen. Ich versuche, eine Regex zu entwickeln, die in Sublime Text funktioniert, die die meisten Warnungen beheben wird. Mein erster Versuch istEin Regex, um die ActionController :: TestCase HTTP-Verfallswarnung zu beheben

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

Dies funktioniert in vielen Fällen aber nicht auf folgende Weise

  • Es funktioniert nicht, wenn die get über die Leitung mehr als einem geht. Wenn es über eine Zeile hinausgeht, endet die vorhergehende Zeile in ,\n.
    • Es funktioniert nicht für put, create und die anderen http Verben
    • Es funktioniert nicht, wenn es eine andere Art von Eingabe ist z.B. headers.

Der letzte Fall ist mir nicht so wichtig, da ich relativ wenige davon haben, so dass diese manuell beheben können. Kann jemand eine Find Regex- und Replace-Anweisung vorschlagen, die die meisten Deprecation-Fälle repariert?

Antwort

0

Ich kam mit dem folgenden Prozess, der für mehrere Zeilen und für verschiedene HTTP-Verben funktioniert. Es funktioniert nicht für komplexere Fälle, wie die Verwendung von header Informationen. Es ist ein zweistufiger Prozess:

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

dann

Find: params: { , 
then 
params: { 

Diese 95% meiner deprecation Warnungen gelöst.

1

hatte ich das gleiche Problem, aber anstelle eines Regex verwendet ich Rubocop des Autofix Feature:

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

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

, dass ohne dass irgendwelche Syntaxfehler eine große Anzahl dieser deprecation Warnungen festgelegt. Denken Sie daran, TargetRailsVersion: 5.0 oder höher einzustellen, um diesen Cop zu aktivieren.

+0

Das ist interessant. Es ist zu spät, um es in meinem Code zu verwenden, aber ich werde die robocop Autofix-Funktion in Zukunft im Auge behalten. – Obromios

Verwandte Themen