Nakon što je naša web aplikacija definirana i već znamo što trebamo postići, mnogo je puta potrebno postići oblik postojanosti podataka, što se prevodi u pohranjivanje podataka koje je ona negdje prikupila, a zatim u njihovu upotrebu, a to čini bazu podataka motori za nas.
Tada imamo potrebu da naši podaci trajno ostanu u aplikacijama, kada moramo tražiti ili razumjeti kako se nositi s tim operacijama i iako to danas zvuči složeno, postoje mnogi alati koji nam olakšavaju rad, na primjer ORM koje nam daju mogućnost stvaranja struktura koje su neovisne o stroju tako da teško da ćemo ikada napisati čisti upit.
U slučaju Sinatra Postoji nekoliko dragulja koji su već zaduženi za veze i upravljanje bazama podataka, pa ćemo vidjeti što su to i kako ih možemo integrirati u našu aplikaciju.
Odaberite Database Engine
Prvi korak koji moramo učiniti je odabrati pravi mehanizam baze podataka za našu aplikaciju, na tržištu postoji mnogo rješenja i svako s drugom svrhom, u slučaju Sinatra općenito ćemo koristiti MySQL ili PostgreSQL u proizvodnom okruženju ili ako to ne uspije SQLite u razvojnim okruženjima.
U slučaju ovog vodiča, odlučili smo se za posljednju opciju zbog jednostavnosti instalacije i brzine s kojom možemo početi raditi.
Instaliranje SQLite -a
Da biste instalirali ovaj motor, prije svega odlazimo na njegovu službenu web stranicu i preuzimamo paket koji odgovara našem sustavu, mnoge distribucije u Linux Oni već dolaze s instaliranim i funkcionalnim motorom pa ćemo vidjeti kako provesti ovaj proces Windows.
Na prethodnoj slici vidimo da moramo preuzeti unaprijed sastavljene binarne datoteke, nakon što to učinimo raspakirat ćemo ih u mapu pod nazivom SQLite u našem C: pogonu i tu mapu dodajemo kao varijablu okruženja u našu STAZA. Kada se gore navedeno učini prilikom pisanja sqlite3 u našoj konzoli trebali bismo vidjeti nešto poput sljedećeg.
Nakon što je ovaj korak pokriven, sada moramo preuzeti odgovarajući upravljački program za Rubin, zato u našu komandnu konzolu moramo napisati sljedeće:
dragulj instalirati sqlite3To bi nam trebalo dati rezultat poput sljedećeg koji ukazuje na to da je instalacija dragulja bila uspješna za povezivanje s SQLite.
ORM
Budući da imamo naš mehanizam baze podataka, sada je red na nabaviti ORMOvo je alat koji nam omogućuje pretvaranje tablica baze podataka u objekte, na taj način možemo lakše raditi s njima u našoj aplikaciji.
PrednostGlavna prednost ORM je da nam omogućuje neovisnost o stroju, budući da ne moramo izravno pisati SQL kod, možemo jednostavno promijeniti konfiguraciju i izvršiti odgovarajuće migracije.
Naravno, postoji mnogo mogućnosti za rad Rubin i sa Sinatra, međutim, jedan od najprijatnijih za početak je DataMapper.
Instalirajte DataMapper
Instalacija ovoga ORM Ne može biti jednostavnije, a to zahvaljujući činjenici da je i dragulj, pa jednostavno moramo izvršiti nekoliko uputa u našoj konzoli, prva je sljedeća koja nam pomaže u dobivanju osnovne komponente:
gem install data_mapperTo bi trebalo dati rezultat sličan sljedećem:
Sada kada imamo bazu, jednostavno moramo instalirati upravljački program tako da DataMapper može komunicirati sa SQLite, za to moramo instalirati sljedeći dragulj:
dragulj instalirati dm-sqlite-adapterTo je ono što će našim aplikacijama omogućiti stvaranje tablica i korištenje baze podataka bez pisanja SQL koda. Na kraju, instalacija upravljačkog programa trebala bi nam dati sljedeću poruku na našoj konzoli.
Povežite se s bazom podataka
Budući da imamo instalirane ovisnosti, ono što sada moramo učiniti je nastaviti testirati kako funkcionira naše novo okruženje za postojanost podataka, za to ćemo stvoriti klasu. Ova će klasa biti osnova koja će nam omogućiti stvaranje tablice i pohranjivanje zapisa u nju, to nam također daje mogućnost da ne moramo pisati kôd SQL izravno, tako da će u budućnosti, kad budemo morali koristiti drugi mehanizam baze podataka, biti dovoljna samo promjena konfiguracije.
U našoj aplikacijskoj mapi stvorit ćemo datoteku pod nazivom pjesme.rb, ono što ova klasa mora učiniti je imati kartu kako možemo pohraniti pjesmu u bazu podataka, pogledajmo sadržaj, a zatim objasnimo što svaki njezin odjeljak radi:
zahtijevaju 'dm-core' zahtijevaju 'dm-migrations' DataMapper.setup (: default, "sqlite3: // # {Dir.pwd} /musica.db") klasa Pjesme uključuju DataMapper :: Svojstvo resursa: id, Serijsko svojstvo: title, String property: duration, Integer property: release_date, Date end DataMapper.finalizePrije svega moramo to učiniti zahtijevaju ključnih komponenti DataMapper u ovom slučaju dm-jezgra Y dm-migracije. Zatim stvaramo konfiguracijsku liniju koja nam omogućuje korištenje SQLite za trenutno stvaranje datoteke, u ovom slučaju glazba.dbAko datoteka već postoji, to znači da baza podataka već postoji pa bi se jednostavno uspostavila veza.
Konačno radimo svoj čas Pjesme koji će sadržavati niz atributa koji ga identificiraju i uključivanje druge klase DataMapper. Time smo spremni za sljedeću fazu, a to je testiranje naše aplikacije. Kako nismo stvorili ništa za vidjeti u svom pregledniku, pravo je vrijeme za korištenje Ruby interaktivna konzola (irb), što će nam omogućiti da provjerimo je li sve na dobrom putu, osim što će nam omogućiti da se naviknemo na DataMapper.
Isprobajte našu aplikaciju
Prije svega na našem terminalu ili konzoli moramo otići u mapu u koju smo pohranili našu datoteku pjesme.rb budući da je to ključ za razvoj našeg primjera, jednom tamo moramo pokrenuti našu interaktivnu konzolu Rubin upisivanjem naredbe:
irbKad ga pokrenemo, možemo to učiniti zahtijevaju našeg razreda postavljanjem naredbe:
zahtijevaju "./ pjesme"Ovo se mora vratiti ako je uspješno, što možemo vidjeti na sljedećoj slici.
Sljedeći čin moramo koristiti alat auto_migrate od DataMapper, to će nam omogućiti da stvorimo tablicu s atributima naše klase u odgovarajućoj datoteci baze podataka. Za to jednostavno napišemo sljedeće:
Pjesme.auto_migriraj!Što stvara potrebnu strukturu za spremanje zapisa.
Napravite našu prvu pjesmu
Ono što moramo učiniti je stvoriti objekt koji će nam omogućiti spremanje potrebnih vrijednosti u bazu podataka, za to ćemo stvoriti objekt koji se zove pjesma:
pjesma = Pjesme.novoZa kasnije spremanje sa sljedećom naredbom:
Ovo nam već daje osnovnu platformu za uključivanje informacija u našu bazu podataka, da vidimo što bi konzola trebala pokazati u ovom trenutku:
Nakon što to učinimo, možemo spremiti podatke za to. Dok smo još u našoj konzoli, dodavat ćemo atribute našeg objekta jedan po jedan, da vidimo:
song.title = "Nova pjesma" song.duration = "315" song.release_date = Date.new (2010) song.saveSvaka od prethodnih uputa bila je pohranjena u objekt pjesme i izvršavala metodu uštedjeti sve se to sprema u bazu podataka. Na sljedećoj slici vidimo proces koji smo proveli.
Također napominjemo da Rubin to je osjetljivo na velika i mala slova stoga moramo biti oprezni s načinom na koji pišemo razrede, jer je u slučaju konzole došlo do pogreške pri pisanju klase Datum, budući da je napisan datum, što je odmah otkriveno. Konačno, ako želimo provjeriti pohranjene pjesme, dovoljno je napisati sljedeću uputu:
Pjesme.sveTakođer možemo napraviti zapis o tome koliko zapisa imamo sa sljedećim.
Pjesme.brojZa kraj, pogledajmo odgovor primljen u našu konzolu pri izvršavanju ove dvije naredbe.
Umetnuli smo svoj prvi zapis i uspješno ga konzultirali te smo tako naučili kako koristiti bazu podataka Sinatra, iako su najpažljiviji možda shvatili da je sve u čemu smo radili Rubin, i ovo je bila sjajna ideja, pokazati koliko se zna Rubin možemo raditi s Sinatra bez mnogo komplikacija.