Version 6.1 des Webframeworks für Ruby-Entwickler Mit Rails 6.1 wurde gerade ein neues Release des für Ruby-Entwickler wichtigsten Webframeworks Ruby veröffentlicht. Ruby 6.1 folgt auf Rails 6.0, das im August 2019 nach gut zwei Jahren Entwicklung erschien.

Die neue Version führt horizontales Sharding und Strict Loading ein und bringt auch Verbesserungen beim Wechsel von Datenbanken.

Im Grunde konzentrieren sich die Neuerungen diemal auf Features, die die Entwickler brauchen, um ihre Anwendung über Jahre hinweg funktionell halten zu können.

Neu: Delegated Types, Loading und Datenbanken

So lassen sich jetzt auch Verbindungen zu einzelnen Datenbank umschalten. Wenn man in Version 6.1 den Handler legacy_connection_handling in der Konfiguration auf false setzt, kann man damit nun auch die Verbindung für eine einzelne Datenbank wechseln, was man dann über den Aufruf von connected_to auf der entsprechenden abstrakten Klasse macht.

Außerdem konnte Rails das horizontale Shading bisher nicht unterstützen, weil den Modellen in der Active-Record-Implementierung nur eine einzige Verbindung pro Rolle pro Klasse gestattet war. Jetzt ist das horizontale Shading mit Rails 6.1 möglich.

Auch der strict_loading-Mode, mit dem man optional ein Lazy Loading vermeiden kann, wird jetzt unterstützt. Damit können die Entwickler sicherstellen, dass ein Eager Loading für ihre Associations funktioniert und N+1-Ausfallwahrscheinlichkeiten nur gering bleiben. Auch die Unterstützung für Association-Deklarationen und die Möglichkeit, ein Strict Loading standardmäßig zu aktivieren, haben mit Ruby 6.1 Eingang in das Webframework gefunden.

Als Alternative zur Single-Table-Vererbung kennt Rails 6.1 jetzt auch sogenannte Delegated Types. Das ist beim Darstellen von Klassenhierarchien nützlich, wobei die Oberklasse auch eine konkrete Klasse sein kann, die durch ihre eigene Tabelle repräsentiert wird. Damit hat jede Unterklasse ihre eigene Tabelle zur Aufnahme von zusätzlichen Attributen.

Auch neu: Active Storage und Deprecations

Ein Update gab es auch für das Active-Storage-Feature, bei dem sich jetzt Anhänge für den Service konfigurieren lassen, in dem man sie speichern möchte. Außerdem kommt Rails 6.1 mit Unterstützung für permanente URLs für Blobs.

Beim Betreiben einer Anwendung ohne Deprecation-Warnung ist das Feature ActiveSupport::Deprecation.disallowed_warnings hilfreich. Mit dieser Funktion kann eine Anwendung optional einen Fehler auslösen, falls eine Deprecation-Warnung ausgegeben wird.

Als veraltet (deprecated) gilt jetzt der classicAutoloader. Für neue Rails-Projekte wird davon abgeraten, ihn noch zu verwenden. Außerdem wird für Projekte, die den classicAutoloader nutzen, empfohlen, beim Upgrade den mit Rails 6.0 eingeführten Zeitwerk-Code-Loader zu nutzen.

Weitere Neuerungen in Ruby 6.1 finden Sie in der Blog-Ankündigung und in den  Changelogs.