Eine neue Version von Rails steht vor der Tür. Derzeit gibt es keinen bestätigten Veröffentlichungstermin, es wird jedoch erwartet, dass es vor Weihnachten verfügbar sein wird. Zum Zeitpunkt der Veröffentlichung dieses Beitrags ist die aktuellste Version 7.0.0.rc1. HEY, Github, Shopify und Basislager Alle führen Rails 7 Alpha in der Produktion aus, sodass wir davon ausgehen können, dass selbst der Release Candidate stabil läuft.
Unser Ziel in diesem Beitrag ist es, einen Blick auf einige der neuen Funktionen und Änderungen zu werfen, die Rails 7 mit sich bringen wird.
Gibt es etwas Neues in Ruby on Rails 7?
Die neueste Ruby on Rails-Version bietet einige außergewöhnliche und aufregende Funktionen. Laut Rails-Ersteller David HanssonDiese Version enthält alles, was Entwickler zum Erstellen einer modernen Webanwendung benötigen. Laut Hanson ist diese Veröffentlichung der Höhepunkt jahrelanger Fortschritte in fünf verschiedenen Bereichen. Werfen wir einen Blick darauf, was Ruby on Rails 7 zu bieten hat
1. Es ist kein Webpack oder Node erforderlich.
Für die Verwendung von npm-Paketen ist es für Entwickler nicht erforderlich, über Webpack und Nodejs zu verfügen. Es wären viele Schritte erforderlich, um ES6 und Babel zu übersetzen und dann zu bündeln. Für diese Aufgabe kann Webpacker Gem verwendet werden, es brachte jedoch zusätzlichen Aufwand mit sich und war schwierig zu modifizieren.
Mit dem Gem „importmaps-rails“ können Entwickler jetzt Karten importieren. Um Abhängigkeiten zu aktualisieren, anzuheften oder aufzuheben, können Sie ./bin/importmap verwenden, anstatt Code für package.json zu schreiben.
Beispiel: So installieren Sie date-fns:
$ ./bin/importmap pin date-fns
Dadurch wird automatisch eine Zeile in config/importmap.rb eingefügt wie:
in „date-fns“, an: „https://ga.jspm.io/npm:[email protected]/esm/index.js“
Und in Ihrem Javascript schreiben Sie weiterhin Codes wie früher.
importiere { formatDistance, subDays } aus 'date-fns'
formatDistance(subDays(new Date(), 3), new Date(), { addSuffix: true })
//=> „vor 3 Tagen“
Wenn Sie mit dieser Struktur arbeiten, müssen Sie dies im Hinterkopf behalten, da sich das, was Sie schreiben, nicht auf das auswirkt, was der Browser wahrnimmt. Da die meisten Browser mittlerweile ES6 unterstützen, ist dies kein Problem. Die Transformation zu JS ist nur für JSK und Typescript erforderlich.
Entwickler müssen beispielsweise Webpack, Esbuild und Rollup verwenden, wenn sie React mit JSX verwenden möchten.
Dies ist mit Rail 7 schnell erledigt. Führen Sie bei einer der gewählten Strategien einfach den folgenden Befehl aus:
$ ./bin/rails javascript:install:[esbuild|rollup|webpack]
2. Eine Datenbankschicht, die verschlüsselt ist
Mit Rail 7 können Entwickler bestimmte Datenbankfelder mithilfe der Encrypts-Methode auf ActiveRecord::Base verschlüsseln. Sie müssen den folgenden Code schreiben, nachdem Sie Ihre Ersteinrichtung eingerichtet haben:
Klasse Message < ApplicationRecord
verschlüsselt:Text
Ende
Es gibt keinen Unterschied zwischen verschlüsselten Attributen und anderen Attributen. Das Rails 7-Framework verschlüsselt und entschlüsselt Ihre Datenbank und Anwendung automatisch.
Wenn Sie jedoch die Option „deterministic: true“ an die Methode „encrypts“ übergeben, können Sie die Datenbank des Felds nicht abfragen. Daher ist das deterministische Modell weniger sicher als andere Modi und wird daher normalerweise nur in Notfällen verwendet.
3. Asynchrone Abfrage
Die Methode „load_async“ steht Entwicklern jetzt beim Abfragen von Daten zur Verfügung. Wenn mehrere Abfragen gleichzeitig gestellt werden, ist dies zeitsparend. Damit können Sie Folgendes ausführen:
def PostsController
Def-Index
@posts = Post.load_async
@categories = Category.load_async
Ende
Ende
Es werden zwei Abfragen gleichzeitig ausgelöst. Mit anderen Worten: Wenn jede Abfrage 200 ms dauern würde, würde die Gesamtzeit zum Abrufen zweier Ergebnisse 200 ms statt 400 ms betragen.
4. Es wäre nur möglich, Anwendungen im Zeitwerk-Modus auszuführen.
Der Zeitwerk-Modus von Rail 7 wird nun für alle Anwendungen verfügbar sein. Das Management hat sichergestellt, dass diese Transformation für die Entwickler reibungslos verläuft. Ruby on Rails Code-Loader Zeitwerk. Es ermöglicht Entwicklern das einfache Laden von Modulen und Klassen aus Ihrem Projekt.
Es wird zum Starten von Gem-Abhängigkeiten, Projekten, Anwendungen usw. verwendet. Inflektoren, Konfigurationen und Logger sind für jeden Loader einzigartig. Der einzige Unterschied zwischen dem Zeitwerk- und dem Classic-Modus besteht darin, dass er eine bessere Ladestrategie bietet.
5. Jetzt ersetzen Stimulus und Turbolinks UJS und Turbolinks
Rails 7-Anwendungen werden jetzt standardmäßig mit Stimulus und Turbo (von Hotwire) geliefert. Bei Hotwire wird HTML anstelle von JSON über das Kabel gesendet, sodass Entwickler Webanwendungen mit minimalem JavaScript erstellen können.
Dadurch werden Seiten schnell geladen, Vorlagen werden gleichzeitig auf dem Server ausgeführt und Entwickler haben eine produktive Entwicklungserfahrung. Mit Turbo können Sie Seitenänderungen beschleunigen, komplexe Seiten in Komponenten zerlegen und Aktualisierungen über WebSockets streamen.
Hotwire und Turbo sind beide Hybridtechnologien; Sie können in iOS- und Android-Geräte integriert werden. In Kombination mit Turbo bietet Stimulus eine Lösung für die Erstellung schneller und überzeugender Anwendungen.
6. Verwenden Sie sole, um Ihre Abfrage mit einem einzelnen Datensatz zu integrieren
Beim Bestätigen, dass eine Abfrage mit einem einzelnen Datensatz übereinstimmt, können Entwickler jetzt „first“ oder „find_by“ anstelle von „sole“ oder „find_sole_by“ verwenden.
Product.where([„price = %?“, price]).sole
# => ActiveRecord::RecordNotFound (wenn kein Produkt mit angegebenem Preis)
# => # (wenn ein Produkt mit angegebenem Preis)
# => ActiveRecord::SoleRecordExceeded (wenn mehr als ein Produkt mit angegebenem Preis)
user.api_keys.find_sole_by(Schlüssel: Schlüssel)
# wie oben
7. Stream-generierte Dateien können durch Controller-Aktionen verarbeitet werden.
Durch die Verwendung von send_stream innerhalb einer Controller-Aktion optimiert Rail on Ruby 7 die im laufenden Betrieb generierten Dateien.
send_stream(Dateiname: „subscribers.csv“) führt |stream| aus
stream.write „email_address,updated_at\n“
@subscribers.find_each macht |subscriber|
stream.write „#{subscriber.email_address},#{subscriber.updated_at}\n“
Ende
Ende
Bei der Bereitstellung auf Heroku erhalten Entwickler eine sofortige/teilweise Antwort, sodass sie wissen, dass etwas passiert.
8. Varianten mit Namen
Ruby on Rails 7 unterstützt Benennungsvarianten mithilfe von ActiveStorage.
Schlussfolgerungen
In den Versionshinweisen zu Rails 7 finden Sie die vollständige Liste der Fehlerbehebungen, Funktionen und Änderungen. Derzeit sind sie nicht umfassend, werden aber bald aktualisiert.
Bitte beachten Sie, dass Rails 6.1 keine Fehlerbehebungen mehr erhält, wenn Sie noch Rails 6 oder niedriger mit der endgültigen Version von Rails 7 ausführen. Mit dem EOL für Rails 5.2 endet auch der Support, da es keine Updates mehr erhält.
Viel Spaß beim Codieren! Kontakt SchienenCarma für mehr Informationen!