Rails 8.2 kompiliert HTML-Templates standardmäßig mit Herb statt Erubi
This Week in Rails vom 25. September, geschrieben nach der Rails World in Austin, listet die Änderungen, die in den vorangegangenen sieben Tagen im Hauptzweig von Rails gelandet sind. Die, der die meisten Anwendungsentwickler begegnen werden, ist eine neue Voreinstellung dafür, wie Templates kompiliert werden.
config.action_view.erb_implementation akzeptiert jetzt :herb oder :erubi, und die Framework-Voreinstellungen für Rails 8.2 setzen :herb. Neue Anwendungen und bestehende mit config.load_defaults 8.2 kompilieren HTML-Templates über ERB::Herb und alle anderen Formate über Erubi. Herb ist ein HTML-bewusstes Werkzeugprojekt für ERB; in derselben Woche wurde zudem ein Prüfer so geändert, dass sich das Verhalten über Herb-Versionen hinweg gleicht.
Zwei Veraltungen kamen dazu. supports_datetime_with_precision?, vor elf Jahren eingeführt, um die Option :precision bei Datums- und Zeitspalten zu steuern, wird nicht mehr gebraucht, weil jede von Active Record unterstützte Datenbank Präzision beherrscht - die Unterstützung für MySQL 5.5 endete vor zwei Jahren. Und die Konstante CALLBACKS, seit Langem überholt und nur in Tests genutzt, ist ohne Ersatz veraltet und fällt mit Rails 9 weg; der Newsletter merkt an, dass alles, was darauf aufbaut, Callbacks wie before_commit stillschweigend auslässt.
Unter den Korrekturen: Nicht-ASCII-Voreinstellungen im strikten locals:-Kommentar eines Templates wurden bei reinem ASCII-Inhalt falsch dargestellt, ohne Fehler; BroadcastLogger#tagged funktioniert jetzt beim Senden an mehrere taggende Logger; die Optionen von ActionController::ParamsWrapper sind Ractor-sicher; und eine Fremdschlüsselprüfung für PostgreSQL qualifiziert ihren Cast mit dem Schema.

Was das bedeutet
Den Standard-Compiler für Templates zu wechseln, ist ein größerer Schritt, als die einzeilige Einstellung vermuten lässt. Eine HTML-bewusste Engine kann die Struktur des erzeugten Markups verstehen, was bessere Fehlermeldungen und Werkzeuge ermöglicht als ein textbasierter ERB-Compiler. Es heißt aber auch, dass Templates, die sich auf Eigenheiten von Erubi verlassen, sich anders verhalten können, sobald eine Anwendung die Voreinstellungen von 8.2 übernimmt.
Weil es eine Voreinstellung und kein Zwang ist, können Teams bewusst umsteigen: erb_implementation ausdrücklich setzen, die Tests laufen lassen und auf Darstellungsunterschiede achten, bevor sie load_defaults umstellen. Die Veraltung von CALLBACKS lohnt eine Suche - Code, der sie nutzt, hat die ganze Zeit Callbacks verpasst.