Managementul bazelor de date cu Sinatra

Odată ce aplicația noastră web este definită și știm deja ce trebuie să realizăm, de multe ori este necesar să obținem o formă de persistență a datelor, aceasta se traduce prin stocarea datelor obținute de ea undeva și apoi folosirea acesteia și acest lucru face ca baza de date motoare pentru noi.

Având atunci nevoia ca datele noastre să persiste în aplicații, este momentul în care trebuie să căutăm sau să înțelegem cum să gestionăm aceste operațiuni și, deși poate părea complexă astăzi, există multe instrumente care ne facilitează munca, de exemplu, există ORM care ne oferă posibilitatea de a crea structuri care sunt independente de motor, astfel încât cu greu vom scrie vreodată o interogare pură.

În cazul în care Sinatra Există mai multe pietre prețioase care se ocupă deja de conexiuni și de administrarea bazelor de date, așa că vom vedea care sunt acestea și cum le putem integra în aplicația noastră.

Alegeți motorul bazei de date


Primul pas pe care trebuie să-l facem este să alegem motorul de bază de date potrivit pentru aplicația noastră, există multe soluții pe piață și fiecare cu un scop diferit, în cazul Sinatra vom folosi în general MySQL sau PostgreSQL într-un mediu de producție sau, în caz contrar SQLite în mediile de dezvoltare.

În cazul acestui tutorial, am optat pentru ultima opțiune datorită ușurinței sale de instalare și a vitezei cu care putem începe să lucrăm.

Instalarea SQLite


Pentru a instala acest motor, în primul rând mergem pe site-ul său oficial și descărcăm pachetul corespunzător sistemului nostru, multe distribuții în Linux Acestea vin deja cu acest motor instalat și funcțional, așa că vom vedea cum să realizăm acest proces în Windows.

În imaginea anterioară vedem că trebuie să descărcăm binele precompilate, odată ce acest lucru este făcut, le vom dezarhiva într-un folder numit SQLite în unitatea C: și adăugăm acel folder ca variabilă de mediu în CALE. Odată ce cele de mai sus se realizează la scriere sqlite3 în consola noastră ar trebui să vedem ceva de genul următor.

Odată ce acest pas este acoperit, acum trebuie să descărcăm driverul corespunzător pentru Rubin, de aceea în consola noastră de comandă trebuie să scriem următoarele:

 gem instala sqlite3
Acest lucru ar trebui să ne ofere un rezultat, cum ar fi următorul, care indică faptul că instalarea bijuteriei a avut succes pentru a ne conecta SQLite.

ORM


Deoarece avem motorul nostru de baze de date, acum este rândul să obținem ORMAcesta este un instrument care ne permite să convertim tabelele unei baze de date în obiecte, astfel putem lucra mai ușor cu ele în aplicația noastră.

AvantajPrincipalul avantaj al ORM este că ne permite să fim independenți de motor, deoarece nefiind nevoie să scriem cod SQL direct, putem schimba pur și simplu configurația și putem efectua migrațiile corespunzătoare.

Desigur, există multe opțiuni pentru a lucra Rubin si cu SinatraCu toate acestea, unul dintre cei mai prietenoși pentru început este DataMapper.

Instalați DataMapper


Instalarea acestuia ORM Nu ar putea fi mai simplu, și asta datorită faptului că este și o bijuterie, așa că trebuie pur și simplu să executăm câteva instrucțiuni în consola noastră, primul este următorul care ne ajută să obținem componenta de bază:
 gem instalează data_mapper
Acest lucru ar trebui să producă un rezultat similar cu următorul:

Acum că avem baza, trebuie pur și simplu să instalăm driverul astfel încât DataMapper poate interacționa cu SQLite, pentru aceasta trebuie să instalăm următoarea bijuterie:

 gem instala dm-sqlite-adapter
Acesta este ceea ce va permite aplicațiilor noastre să creeze tabele și să utilizeze baza de date fără a fi nevoie să scrieți cod SQL. La final, instalarea driverului ar trebui să ne transmită următorul mesaj în consola noastră.

Conectați-vă la o bază de date


Deoarece avem dependențele instalate, ceea ce trebuie să facem acum este să testăm cum funcționează noul nostru mediu de persistență a datelor, pentru aceasta vom crea o clasă. Această clasă va fi baza care ne va permite să creăm un tabel și să stochăm înregistrări în acesta, acest lucru ne oferă și posibilitatea de a nu trebui să scriem cod SQL direct, astfel încât în ​​viitor, atunci când va trebui să folosim un alt motor de bază de date, simpla modificare a configurației va fi suficientă.

În dosarul aplicației noastre vom crea un fișier numit cântece.rb, ceea ce trebuie să facă această clasă este să avem harta modului în care putem stoca o melodie în baza de date, să vedem conținutul și apoi să explicăm ce face fiecare secțiune a acesteia:

 require 'dm-core' require 'dm-migrations' DataMapper.setup (: implicit, clasa "sqlite3: // # {Dir.pwd} /musica.db") Cântecele includ DataMapper :: Resurse de proprietate: id, Proprietate de serie: title, String property: duration, Integer property: release_date, Data end DataMapper.finalize
În primul rând trebuie să facem solicita a componentelor cheie ale DataMapper în acest caz dm-core Da dm-migrații. Apoi creăm o linie de configurare care este cea care ne permite să o folosim în primul rând SQLite pentru a crea imediat fișierul, în acest caz music.dbDacă fișierul există deja, înseamnă că baza de date există deja, deci conexiunea ar fi făcută pur și simplu.

În cele din urmă ne facem cursul cântece care va conține o serie de atribute care îl identifică și includerea unei alte clase de DataMapper. Cu aceasta, suntem pregătiți pentru următoarea fază, care este să ne testăm aplicația. Deoarece nu am creat nimic de văzut în browserul nostru, este un moment bun să folosim Consolă interactivă Ruby (irb), ceea ce ne va permite să verificăm dacă totul este pe drumul cel bun, pe lângă faptul că ne permite să ne obișnuim cu DataMapper.

Încercați aplicația noastră


În primul rând în terminalul sau consola noastră trebuie să mergem în dosarul în care am stocat fișierul cântece.rb întrucât aceasta este cheia dezvoltării exemplului nostru, odată ajuns acolo trebuie să pornim consola noastră interactivă Rubin tastând comanda:
 irb
Odată ce îl începem, putem face acest lucru solicita din clasa noastră prin plasarea comenzii:
 necesită „./cântece”
Acest lucru trebuie să fie adevărat dacă are succes, pe care îl putem vedea în imaginea următoare.

Următorul act trebuie să folosim instrumentul auto_migrare de DataMapper, acest lucru ne va permite să creăm tabelul cu atributele clasei noastre în fișierul de bază de date corespunzător. Pentru aceasta scriem pur și simplu următoarele:

 Songs.auto_migrate!
Ceea ce creează structura necesară pentru a putea stoca înregistrările.

Creați prima noastră melodie


Acum ceea ce trebuie să facem este să creăm obiectul care ne va permite să stocăm valorile necesare în baza de date, pentru aceasta vom crea un obiect numit melodie:
 cântec = Cântece.nou
Pentru a-l stoca ulterior cu următoarea comandă:

Acest lucru ne oferă deja o platformă de bază pentru a include informațiile în baza noastră de date, să vedem ce ar trebui să arate consola în acest moment:

Odată ce acest lucru este făcut, putem stoca datele pentru acesta. În timp ce ne aflăm încă în consola noastră, vom adăuga atributele obiectului nostru unul câte unul, să vedem:

 song.title = „Cântec nou” song.duration = „315” song.release_date = Date.new (2010) song.save
Fiecare dintre instrucțiunile anterioare a fost stocată în obiectul melodiei și a executat metoda salva toate acestea sunt stocate în baza de date. Vedem în imaginea următoare procesul pe care l-am realizat.

De asemenea, observăm că Rubin este caz sensibil deci trebuie să fim atenți la modul în care ne scriem clasele, deoarece în cazul consolei a apărut o eroare la scrierea clasei Data, de când a fost scris Data, care a fost detectată imediat. În cele din urmă, dacă dorim să consultăm melodiile stocate, este suficient să scriem următoarea instrucțiune:

 Cântece.toate
De asemenea, putem face un cont despre câte înregistrări avem cu următoarele.
 Cântece.număr
Pentru a termina, să vedem răspunsul primit în consola noastră atunci când executăm aceste două comenzi.

Am inserat prima noastră înregistrare și am consultat-o ​​cu succes, învățând astfel cum să folosim baza de date Sinatra, deși cel mai atent poate și-a dat seama că tot ce am făcut a fost în Rubin, și aceasta a fost ideea grozavă, de a demonstra cum știi Rubin putem lucra cu Sinatra fără a avea multe complicații.

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave