Sobald unsere Webanwendung definiert ist und wir bereits wissen, was wir erreichen müssen, ist es oft notwendig, eine Form der Datenpersistenz zu erreichen. Dies bedeutet, dass die von ihr erhaltenen Daten irgendwo gespeichert und dann verwendet werden, und das macht die Datenbank Motoren für uns.
Da wir dann die Notwendigkeit haben, dass unsere Daten in den Anwendungen verbleiben, müssen wir nach diesen Vorgängen suchen oder verstehen, wie diese zu handhaben sind ORM die uns die Möglichkeit geben, Engine-unabhängige Strukturen zu erstellen, so dass wir kaum noch eine reine Abfrage schreiben werden.
Im Falle des Sinatra Es gibt mehrere Gems, die bereits für die Verbindungen und die Verwaltung der Datenbanken verantwortlich sind, also werden wir sehen, was sie sind und wie wir sie in unsere Anwendung integrieren können.
Wählen Sie die Datenbank-Engine
Der erste Schritt, den wir tun müssen, ist die richtige Datenbank-Engine für unsere Anwendung auszuwählen. Es gibt viele Lösungen auf dem Markt und jede mit einem anderen Zweck, im Falle von Sinatra wir werden im Allgemeinen verwenden MySQL oder PostgreSQL in einer Produktionsumgebung, oder wenn dies nicht gelingt SQLite in Entwicklungsumgebungen.
Im Fall dieses Tutorials haben wir uns aufgrund der einfachen Installation und der Geschwindigkeit, mit der wir mit der Arbeit beginnen können, für die letzte Option entschieden.
SQLite installieren
Um diese Engine zu installieren, gehen wir zunächst auf die offizielle Website und laden das Paket herunter, das unserem System entspricht, viele Distributionen in Linux Sie werden bereits mit diesem installierten und funktionsfähigen Motor geliefert. Wir werden also sehen, wie dieser Vorgang ausgeführt wird Fenster.
Im vorherigen Bild sehen wir, dass wir die vorkompilierten Binärdateien herunterladen müssen. Sobald dies erledigt ist, werden wir sie in einen Ordner namens . entpacken SQLite in unserem Laufwerk C: und wir fügen diesen Ordner als Umgebungsvariable in unserem WEG. Sobald das obige beim Schreiben erledigt ist sqlite3 In unserer Konsole sollten wir etwa Folgendes sehen.
Sobald dieser Schritt erledigt ist, müssen wir nun den entsprechenden Treiber für . herunterladen Rubin, deshalb müssen wir in unserer Befehlskonsole Folgendes schreiben:
gem installieren sqlite3Dies sollte uns ein Ergebnis wie das folgende geben, das anzeigt, dass die Installation des Gems erfolgreich war, um eine Verbindung herzustellen SQLite.
Die ORM
Da wir unsere Datenbank-Engine haben, ist es jetzt an der Reihe, die ORMDies ist ein Werkzeug, das es uns ermöglicht, die Tabellen einer Datenbank in Objekte umzuwandeln, auf diese Weise können wir in unserer Anwendung einfacher mit ihnen arbeiten.
VorteilDer Hauptvorteil von ORM ist, dass wir unabhängig von der Engine sind, da wir nicht direkt SQL-Code schreiben müssen, sondern einfach die Konfiguration ändern und die entsprechenden Migrationen durchführen können.
Natürlich gibt es viele Möglichkeiten, damit zu arbeiten Rubin und mit Sinatra, aber einer der freundlichsten zu beginnen ist DataMapper.
DataMapper installieren
Die Installation dieser ORM Es könnte nicht einfacher sein, und das dank der Tatsache, dass es auch ein Juwel ist, also müssen wir nur ein paar Anweisungen in unserer Konsole ausführen. Die erste ist die folgende, die uns hilft, die Basiskomponente zu erhalten:
gem install data_mapperDies sollte zu einem Ergebnis ähnlich dem folgenden führen:
Jetzt, da wir die Basis haben, müssen wir nur noch den Treiber installieren, damit DataMapper kann interagieren mit SQLite, dafür müssen wir das folgende Gem installieren:
gem install dm-sqlite-adapterAuf diese Weise können unsere Anwendungen Tabellen erstellen und die Datenbank verwenden, ohne SQL-Code schreiben zu müssen.Am Ende sollte die Treiberinstallation uns die folgende Meldung in unserer Konsole anzeigen.
Mit einer Datenbank verbinden
Da wir die Abhängigkeiten installiert haben, müssen wir jetzt testen, wie unsere neue Datenpersistenzumgebung funktioniert. Dafür erstellen wir eine Klasse. Diese Klasse wird die Grundlage sein, die es uns ermöglicht, eine Tabelle zu erstellen und darin Datensätze zu speichern. Dies gibt uns auch die Möglichkeit, keinen Code schreiben zu müssen SQL direkt, sodass in Zukunft, wenn wir eine andere Datenbank-Engine verwenden müssen, eine einfache Änderung der Konfiguration ausreicht.
In unserem Bewerbungsordner erstellen wir eine Datei namens Lieder.rb, was diese Klasse tun muss, ist eine Karte zu haben, wie wir einen Song in der Datenbank speichern können, sehen wir uns den Inhalt an und erklären wir dann, was die einzelnen Abschnitte davon tun:
require 'dm-core' require 'dm-migrations' DataMapper.setup (: default, "sqlite3: // # {Dir.pwd} /musica.db") class Songs enthalten DataMapper :: Ressourceneigenschaft: id, serielle Eigenschaft: title, String-Eigenschaft: Dauer, Integer-Eigenschaft: release_date, Datumsende DataMapper.finalizeAls erstes müssen wir die benötigen der Schlüsselkomponenten von DataMapper in diesem Fall dm-Kern Ja dm-migrationen. Dann erstellen wir eine Konfigurationszeile, die wir überhaupt verwenden können SQLite um die Datei sofort zu erstellen, in diesem Fall musik.dbWenn die Datei bereits vorhanden ist, bedeutet dies, dass die Datenbank bereits vorhanden ist, sodass die Verbindung einfach hergestellt wird.
Endlich machen wir unseren Kurs Lieder die eine Reihe von Attributen enthält, die es identifizieren, und die Aufnahme einer anderen Klasse von DataMapper. Damit sind wir bereit für die nächste Phase, unsere Anwendung zu testen. Da wir in unserem Browser nichts zum Anzeigen erstellt haben, ist es ein guter Zeitpunkt, um die Interaktive Ruby-Konsole (irb), mit dem wir überprüfen können, ob alles auf dem richtigen Weg ist, und uns an die DataMapper.
Testen Sie unsere App
Zuerst müssen wir in unserem Terminal oder unserer Konsole in den Ordner gehen, in dem wir unsere Datei gespeichert haben Lieder.rb Da dies der Schlüssel zur Entwicklung unseres Beispiels ist, müssen wir dort unsere interaktive Konsole starten Rubin indem Sie den Befehl eingeben:
irbSobald wir damit angefangen haben, können wir das tun benötigen unserer Klasse, indem Sie den Befehl setzen:
erfordern "./songs"Dies muss true zurückgeben, wenn es erfolgreich ist, was wir in der folgenden Abbildung sehen können.
Als nächstes müssen wir das Werkzeug benutzen auto_migrate von DataMapper, so können wir die Tabelle mit den Attributen unserer Klasse in der entsprechenden Datenbankdatei erstellen. Dazu schreiben wir einfach folgendes:
Lieder.auto_migrate!Das schafft die notwendige Struktur, um die Datensätze speichern zu können.
Erstelle unser erstes Lied
Jetzt müssen wir das Objekt erstellen, mit dem wir die erforderlichen Werte in der Datenbank speichern können. Dazu erstellen wir ein Objekt namens song:
Lied = Lieder.neuUm es später mit dem folgenden Befehl zu speichern:
Damit haben wir bereits eine Basisplattform, um die Informationen in unsere Datenbank aufzunehmen. Sehen wir uns an, was die Konsole an dieser Stelle anzeigen soll:
Sobald dies geschehen ist, können wir die Daten dafür speichern. Während wir noch in unserer Konsole sind, werden wir die Attribute unseres Objekts nacheinander hinzufügen.
song.title = „Neuer Song“ song.duration = „315“ song.release_date = Date.new (2010) song.saveJede der vorherigen Anweisungen wurde im Song-Objekt gespeichert und die Methode ausgeführt speichern all dies wird in der Datenbank gespeichert. Im folgenden Bild sehen wir den von uns durchgeführten Prozess.
Das merken wir auch Rubin es ist Groß-/Kleinschreibung beachten Wir müssen also vorsichtig sein, wie wir unsere Klassen schreiben, da im Fall der Konsole ein Fehler beim Schreiben der Klasse aufgetreten ist Datum, da Datum geschrieben wurde, was sofort erkannt wurde. Wenn wir schließlich die gespeicherten Songs einsehen möchten, reicht es aus, die folgende Anweisung zu schreiben:
Lieder.allWir können auch mit den folgenden Einträgen Rechenschaft darüber ablegen, wie viele Datensätze wir haben.
Lieder.AnzahlZum Abschluss sehen wir uns die Antwort an, die in unserer Konsole beim Ausführen dieser beiden Befehle empfangen wird.
Wir haben unseren ersten Datensatz eingefügt und erfolgreich konsultiert und so gelernt, wie man die Datenbank mit verwendet Sinatra, obwohl die aufmerksamsten vielleicht erkannt haben, dass alles, was wir taten, in war Rubin, und das war die großartige Idee, zu zeigen, wie Wissen Rubin wir können mit arbeiten Sinatra ohne viele Komplikationen zu haben.