Mit Action Cable bringt Ruby on Rails 5.0 ein brandneues Framework mit, das sich um Websockets kümmert. Und das ist nicht die einzige Neuerung in der nach sechs Monaten Arbeit veröffentlichten Rails-Neuauflage.
Das neue Framework Action Cable verwaltet Verbindungen und bringt einen Channels-Layer für das serverseitige Processing sowie einen Javascript-Layer für clientseitige Interaktionen mit. Features wie Chats und Benachrichtigungen sollen sich damit kinderleicht bauen lassen, versprechen die Rails-Macher in ihrer Ankündigung.
Während der Entwicklung läuft Action Cable im selben Prozess wie die App, auf dem Produktionsserver lässt sich dafür ein eigener Prozess starten. Auch hilfreich finden die Entwickler, dass die User bei der Arbeit mit Websockets dank Action Cabel Zugriff auf das Active-Record- und das Poro-Domain-Modell erhalten. Ein “ActionController::Renderer”-System soll es zudem vereinfachen, Templates außerhalb des Controllers zu rendern, um serverseitige Templates für Websocket-Antworten zu recyclen.
Für neue Anwendungen, die clientseitig Javascript verwenden (und nicht serverseitig gerendertes HTML) und die nur per Json mit dem Backend reden, eigne sich Ruby on Rails dank eines neuen API-Modus ebenfalls. Erzeugt der User eine neue Rails-Anwendung mit “rails new backend –api”, erhält er ein Site-Skeleton mit einer Konfiguration, die davon ausgeht, dass er Json und nicht HTML verwenden möchte. Das Feature sei noch nicht ganz ausgereift und vertraue bislang standardmäßig auf “#to_json”-Aufrufe.
Neben diesen beiden Highlights zählen die Entwickler noch eine ganze Reihe kleinerer Veränderungen auf. Das Split-Brain-Setup zwischen Rails und Rake endet, nun heißt der Befehl “bin/rails db:migrate” anstelle von “bin/rake db:migrate”. Es gibt ein neues Attributes-API, und der Testrunner meldet Fehlschläge früher. Die Standard-Elternklasse aller durch Generatoren erstellten Modelle heißt “ApplicationRecord”. Weitere Details stehen in verschiedenen Changelogs, welche die Rails-5.0-Ankündigung ebenfalls auflistet.






