Sobald unsere Webanwendung definiert ist und wir bereits wissen, was wir erreichen müssen, ist es häufig erforderlich, eine Form der Datenpersistenz zu erreichen. Dies führt dazu, dass die von ihr erhaltenen Daten irgendwo gespeichert und dann verwendet werden macht die Datenbank-Engines für uns.
Wenn unsere Daten dann in Anwendungen beibehalten werden müssen, müssen wir nach der Verwaltung dieser Vorgänge suchen oder diese verstehen. Auch wenn dies derzeit komplex klingt, gibt es viele Tools, die unsere Arbeit erleichtern, z. B. ORMs Das gibt uns die Möglichkeit, Strukturen zu erstellen, die unabhängig von der Engine sind, so dass wir so gut wie nie eine reine Abfrage schreiben können.
Im Falle von Sinatra gibt es bereits mehrere Juwelen, die für die Verbindungen und die Verwaltung der Datenbanken zuständig sind. Wir werden also sehen, was sie sind und wie wir sie in unsere Anwendung integrieren können.
Wählen Sie das Datenbankmodul
Der erste Schritt, den wir tun müssen, ist die Auswahl der geeigneten Datenbank-Engine für unsere Anwendung. Auf dem Markt gibt es viele Lösungen mit jeweils unterschiedlichen Zwecken. Im Falle von Sinatra werden wir im Allgemeinen MySQL oder PostgreSQL in einer Produktionsumgebung verwenden oder Fehlgeschlagenes SQLite in Entwicklungsumgebungen.
In diesem Tutorial haben wir uns für die letzte Option entschieden, da sie einfach zu installieren ist und wir schnell mit der Arbeit beginnen können.
SQLite installieren
Um diese Engine zuerst zu installieren, gehen wir auf die offizielle Website und laden das entsprechende Paket auf unser System herunter. Viele Linux- Distributionen sind bereits mit dieser Engine installiert und funktionieren, sodass wir sehen werden, wie dieser Prozess unter Windows ausgeführt wird .
Im vorherigen Bild sehen wir, dass wir die vorkompilierten Binärdateien herunterladen müssen. Sobald dies erledigt ist, werden wir sie in einem Ordner namens SQLite in unserer Unit C: dekomprimieren und diesen Ordner als Umgebungsvariable in unseren PATH einfügen . Wenn Sie die obigen Schritte ausgeführt haben, während Sie sqlite3 in unsere Konsole schreiben, sollten Sie Folgendes sehen.
Sobald dieser Schritt erledigt ist, müssen wir jetzt den entsprechenden Treiber für Ruby herunterladen. Deshalb müssen wir in unserer Befehlskonsole Folgendes schreiben:
Edelstein installieren sqlite3
Dies sollte ein Ergebnis wie das folgende ergeben, das angibt, dass die Installation des Gems erfolgreich war, um eine Verbindung zu SQLite herzustellen .
Der ORM
Da wir unser Datenbankmodul haben, ist es nun an der Reihe, das ORM zu erhalten. Dies ist ein Tool, mit dem wir die Tabellen einer Datenbank in Objekte konvertieren können, sodass wir auf diese Weise in unserer Anwendung besser mit ihnen arbeiten können einfach
Natürlich gibt es viele Möglichkeiten, mit Ruby und Sinatra zu arbeiten , jedoch ist DataMapper eine der am einfachsten zu startenden .
Installieren Sie DataMapper
Die Installation dieses ORMs kann nicht einfacher sein, und dies ist auch ein Juwel. Wir müssen einfach ein paar Anweisungen in unserer Konsole ausführen. Die erste ist die folgende, die uns hilft, die Basiskomponente zu erhalten:
gem installiere data_mapper
Dies sollte zu einem Ergebnis führen, das dem folgenden ähnelt:
Nachdem wir die Basis haben, müssen wir nur noch den Treiber installieren, damit DataMapper mit SQLite interagieren kann. Dazu müssen wir das folgende Juwel installieren:
gem install dm-sqlite-adapter
Auf diese Weise können unsere Anwendungen Tabellen erstellen und die Datenbank verwenden, ohne SQL-Code schreiben zu müssen. Am Ende sollte die Installation des Treibers die folgende Meldung in unserer Konsole anzeigen.
Verbindung zu einer Datenbank herstellen
Da wir die Abhängigkeiten installiert haben, müssen wir jetzt testen, wie unsere neue Datenpersistenzumgebung funktioniert. Dazu werden wir eine Klasse erstellen. Diese Klasse wird die Basis sein, auf der wir eine Tabelle erstellen und Datensätze darin speichern können. Dies gibt uns auch die Möglichkeit, keinen SQL- Code direkt schreiben zu müssen, sodass wir in Zukunft eine andere Engine verwenden sollten Eine einfache Änderung der Konfiguration der Datenbank ist ausreichend.
In unserem Anwendungsordner erstellen wir eine Datei mit dem Namen canciones.rb . In dieser Klasse sollten Sie die Karte darüber erstellen, wie ein Lied in der Datenbank gespeichert werden kann. Sehen wir uns den Inhalt an und erläutern Sie anschließend die einzelnen Abschnitte:
Benötige 'dm-core' erfordern 'dm-migrationen' DataMapper.setup (: default, "sqlite3: // # {Dir.pwd} /musica.db") Klasse Songs Include DataMapper :: Resource Eigenschaft: id, Serial Eigenschaft: title, String Eigenschaft: duration, Integer Eigenschaft: launch_date, Date ende DataMapper.finalize
Zunächst müssen wir die wichtigsten Komponenten von DataMapper in diesem Fall dm-core und dm-migrations erforderlich machen. Dann erstellen wir eine Konfigurationszeile, mit der wir SQLite verwenden können , um die Datei sofort zu erstellen. In diesem Fall music.db. Wenn die Datei bereits vorhanden ist, bedeutet dies, dass die Datenbank bereits vorhanden ist. Die Verbindung würde einfach hergestellt werden.
Schließlich erstellen wir unsere Klasse Songs , die eine Reihe von Attributen enthält, die sie identifizieren, und die Aufnahme einer weiteren Klasse von DataMapper wird vorgenommen . Damit sind wir bereit für die nächste Phase, in der unsere Anwendung getestet wird. Da wir nichts erstellt haben, was in unserem Browser angezeigt werden könnte, ist dies ein guter Zeitpunkt, um die interaktive Ruby (irb ) -Konsole zu verwenden, mit der wir überprüfen können, ob alles auf dem richtigen Weg ist. Außerdem können wir uns ein wenig an den DataMapper gewöhnen .
Testen Sie unsere Anwendung
Zuerst müssen wir in unserem Terminal oder unserer Konsole in den Ordner gehen, in dem wir unsere Datei songs.rb gespeichert haben, da dies der Schlüssel zur Entwicklung unseres Beispiels ist. Sobald wir dort unsere interaktive Ruby- Konsole starten müssen, wenn wir den Befehl schreiben:
irb
Sobald wir es gestartet haben, können wir die Anforderungen unserer Klasse erfüllen, wenn wir den Befehl platzieren:
erfordern "./canciones"
Dies sollte wahr sein, was wir im folgenden Bild schätzen können.
Als nächstes müssen wir das Tool Auto_migrate von DataMapper verwenden , damit wir die Tabelle mit den Attributen unserer Klasse in der entsprechenden Datenbankdatei erstellen können. Dazu schreiben wir einfach folgendes:
Songs.auto_migrate!
Dadurch wird die notwendige Struktur zum Speichern der Datensätze erstellt.
Kreieren Sie 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 mit dem Namen song:
song = Songs.new
Speichern Sie es dann mit dem folgenden Befehl:
Dies gibt uns bereits eine Basisplattform, um die Informationen in unsere Datenbank aufzunehmen. Sehen wir uns an, was die Konsole an dieser Stelle anzeigen soll:
Sobald dies erledigt ist, können wir die Daten dafür speichern. Während wir uns noch in unserer Konsole befinden, fügen wir nacheinander die Attribute unseres Objekts hinzu.
canción.tiulo = "Neues Lied" song.duration = "315" song.date_launch = Datum.neu (2010) song.save
Jede der vorherigen Anweisungen wurde im Song-Objekt gespeichert, und wenn Sie die Speichermethode ausführen , wird dies alles in der Datenbank gespeichert. Wir sehen im folgenden Bild den Prozess, den wir durchgeführt haben.
Wir beachten auch, dass Ruby zwischen Groß- und Kleinschreibung unterscheidet, daher müssen wir beim Schreiben unserer Klassen vorsichtig sein, da bei der Konsole beim Schreiben der Date- Klasse ein Fehler aufgetreten ist , da Date geschrieben wurde, der sofort erkannt wurde. Wenn wir die gespeicherten Songs konsultieren möchten, schreiben Sie einfach die folgende Anweisung:
Songs.all
Mit den folgenden Angaben können wir auch angeben, wie viele Datensätze wir haben.
Songs.count
Lassen Sie uns zum Schluss die Antwort sehen, die in unserer Konsole bei der Ausführung dieser beiden Befehle eingeht.
Wir haben unseren ersten Datensatz eingefügt und ihn erfolgreich konsultiert. Wir haben gelernt, wie man die Datenbank mit Sinatra verwendet , obwohl der beobachtendste Benutzer möglicherweise erkannt hat, dass alles, was wir getan haben, in Ruby war , und dies war die großartige Idee. Zeigen Sie, wie wir mit Sinatra arbeiten können, ohne viele Komplikationen zu haben, wenn wir Ruby kennen.