Dev News Daily ENDE

Rails diese Woche: keine CSRF-Tokens bei header_only, Test-Gems später geladen

Der Rails-Wochenbericht vom 30. Oktober, geschrieben von Claudio Baccigalupo, sammelt Änderungen am Hauptzweig des Frameworks. Mehrere davon verändern, was eine neue oder aktualisierte Anwendung tut, ohne dass Entwickler Code anfassen.

Neu erzeugte Anwendungen deklarieren capybara und selenium-webdriver im Gemfile künftig mit require: false. ActionDispatch::SystemTestCase lädt beide Gems ohnehin, sobald ein Systemtest geladen wird; Testprozesse ohne Systemtests starten dadurch schneller.

Anwendungen mit der CSRF-Strategie :header_only, die Anfragen am Header Sec-Fetch-Site prüft und nie ein Token liest, bekommen von Formularen, button_to und csrf_meta_tags keine Authentizitäts-Tokens mehr gerendert. Sichtbare Folge: Die Bytes einer Seite ändern sich nicht mehr von Anfrage zu Anfrage, was für alles zählt, das Antworten zwischenspeichert oder vergleicht.

Action Cable verarbeitet die Befehle einer Verbindung jetzt der Reihe nach; bisher konnten sie gleichzeitig oder vertauscht laufen. Die Einstellung immutable_strings_by_default gilt nur noch für echte String-Spalten. Sie hatte jeden Typ erfasst, der von ActiveModel::Type::String erbt, sodass Text-Spalten und die PostgreSQL-Typen xml, citext, ltree, tsvector und macaddr als :string erkannt wurden.

Bei Abfragen beheben vier Pull Requests das Vorladen von has_many :through mit source_type und Bedingungen. Ein weiterer verhindert, dass left_joins und eager_load einen falschen Join wiederverwenden, wenn dieselbe Through-Assoziation über zwei Elternpfade erreicht wird, und exists? sowie Berechnungen entfernen nun auch default_order, was ungültiges SQL auf PostgreSQL vermeidet. NumericalityValidator in Active Record und die Optionszugriffe an ColumnDefinition sind veraltet, der Log-Filter erkennt URL-kodierte Parameternamen wie %70assword, und die API-Dokumentation wechselt von RDoc zu Markdown.

Rails diese Woche: keine CSRF-Tokens bei header_only, Test-Gems später geladen
Rails diese Woche: keine CSRF-Tokens bei header_only, Test-Gems später geladen — Dev News Daily

Was das bedeutet

Das meiste kommt erst mit der nächsten Rails-Version, zwei Punkte lohnen aber frühe Tests. Die left_joins-Korrektur ändert Ergebnisse, die bisher still falsch waren; betroffene Abfragen liefern also andere Zeilen. Und die CSRF-Änderung ist ein Anlass zu prüfen, ob eine Testsuite irgendwo das Vorhandensein eines Tokens erwartet.