Databasestyring med Sinatra

Når nettprogrammet vårt er definert og vi allerede vet hva vi trenger å oppnå, er det mange ganger nødvendig for å oppnå en form for datastabilitet, noe som betyr at vi lagrer dataene som er oppnådd av det et sted og deretter bruker det, og dette er det som gjør databasen motorer for oss.

Da vi har behov for at dataene våre vedvarer i applikasjonene, er det når vi må se etter eller forstå hvordan vi skal håndtere disse operasjonene, og selv om det kan høres komplisert ut i dag, er det mange verktøy som letter arbeidet vårt, for eksempel er det ORM som gir oss muligheten til å lage strukturer som er uavhengige av motoren, slik at vi nesten aldri vil skrive en ren spørring.

I tilfelle av Sinatra Det er flere perler som allerede er ansvarlige for tilkoblingene og administrasjonen av databasene, så vi får se hva de er og hvordan vi kan integrere dem i applikasjonen vår.

Velg Database Engine


Det første trinnet vi må gjøre er å velge riktig databasemotor for applikasjonen vår, det er mange løsninger på markedet og hver med et annet formål, i tilfelle av Sinatra vi vil vanligvis bruke MySQL eller PostgreSQL i et produksjonsmiljø, eller hvis du ikke klarer det SQLite i utviklingsmiljøer.

I denne opplæringen valgte vi det siste alternativet på grunn av enkel installasjon og hastigheten vi kan begynne å jobbe med.

Installere SQLite


For å installere denne motoren går vi først til det offisielle nettstedet og laster ned pakken som tilsvarer systemet vårt, mange distribusjoner i Linux De kommer allerede med denne motoren installert og funksjonell, så vi får se hvordan vi utfører denne prosessen Windows.

I det forrige bildet ser vi at vi må laste ned de forhåndskompilerte binærfiler, når dette er gjort skal vi pakke dem ut i en mappe som heter SQLite i vår C: -stasjon, og vi legger til den mappen som en miljøvariabel i vår STI. Når ovenstående er gjort når du skriver sqlite3 i konsollen vår bør vi se noe som dette.

Når dette trinnet er dekket, må vi nå laste ned den tilsvarende driveren for Rubin, derfor må vi skrive følgende i kommandokonsollen:

 perle installer sqlite3
Dette burde gi oss et resultat som følgende som indikerer at installasjonen av perlen var vellykket for å koble til SQLite.

ORM


Siden vi har vår database -motor, er det nå turen til å skaffe ORMDette er et verktøy som lar oss konvertere tabellene i en database til objekter, på denne måten kan vi lettere jobbe med dem i applikasjonen vår.

FordelDen største fordelen med ORM er at den tillater oss å være uavhengige av motoren, siden vi ved å ikke trenger å skrive SQL -kode direkte kan endre konfigurasjonen og foreta de tilsvarende migreringene.

Selvfølgelig er det mange alternativer å jobbe med Rubin og med Sinatra, men en av de vennligste å starte er DataMapper.

Installer DataMapper


Installasjonen av dette ORM Det kunne ikke vært enklere, og dette takket være det faktum at det også er en perle, så vi må bare utføre et par instruksjoner i konsollen vår, den første er følgende som hjelper oss med å skaffe hovedkomponenten:
 perle installer data_mapper
Dette bør gi et resultat som ligner på følgende:

Nå som vi har basen trenger vi ganske enkelt å installere driveren slik at DataMapper kan samhandle med SQLite, for dette må vi installere følgende perle:

 gem installer dm-sqlite-adapter
Dette er det som gjør at applikasjonene våre kan lage tabeller og bruke databasen uten å måtte skrive SQL -kode. På slutten bør driverinstallasjonen gi oss følgende melding i konsollen.

Koble til en database


Siden vi har avhengighetene installert, er det vi må gjøre nå å teste hvordan vårt nye data -persistensmiljø fungerer, for dette skal vi lage en klasse. Denne klassen vil være grunnlaget for at vi kan lage et bord og lagre poster i den, dette gir oss også muligheten til å slippe å skrive kode SQL direkte, slik at i fremtiden når vi må bruke en annen databasemotor, vil det bare være nok å endre konfigurasjonen.

I applikasjonsmappen vår skal vi lage en fil som heter sanger.rb, hva denne klassen må gjøre er å ha kartet over hvordan vi kan lagre en sang i databasen, la oss se innholdet og deretter forklare hva hver del av den gjør:

 krever 'dm-core' krever 'dm-migrations' DataMapper.setup (: default, "sqlite3: // # {Dir.pwd} /musica.db") klasse sanger inkluderer DataMapper :: Ressursegenskap: id, Seriell eiendom: title, String property: duration, Integer property: release_date, Date end DataMapper.finalize
Først og fremst må vi gjøre det krever av de viktigste komponentene i DataMapper i dette tilfellet dm-core Y dm-migrasjoner. Deretter lager vi en konfigurasjonslinje som er den som lar oss bruke i utgangspunktet SQLite for å opprette filen umiddelbart, i dette tilfellet musikk.dbHvis filen allerede eksisterer, betyr det at databasen allerede eksisterer, så tilkoblingen vil ganske enkelt bli gjort.

Endelig gjør vi timen vår sanger som vil inneholde en rekke attributter som identifiserer det og inkluderingen av en annen klasse av DataMapper. Med dette er vi klare for neste fase, som er å teste søknaden vår. Siden vi ikke har laget noe å se i nettleseren vår, er det et godt tidspunkt å bruke Rubin interaktiv konsoll (irb), som lar oss sjekke at alt er på rett spor, i tillegg til at vi kan venne oss til DataMapper.

Prøv appen vår


Først og fremst i terminalen eller konsollen må vi gå til mappen der vi har lagret filen sanger.rb siden dette er nøkkelen til å utvikle vårt eksempel, må vi først starte den interaktive konsollen Rubin ved å skrive kommandoen:
 irb
Når vi starter det kan vi gjøre det krever i vår klasse ved å plassere kommandoen:
 krever "./sanger"
Dette må returnere sant hvis det lykkes, noe vi kan se på bildet nedenfor.

Neste handling må vi bruke verktøyet auto_migrate av DataMapper, vil dette tillate oss å lage tabellen med attributtene til klassen vår i den tilsvarende databasefilen. For dette skriver vi ganske enkelt følgende:

 Songs.auto_migrate!
Som skaper den nødvendige strukturen for å kunne lagre postene.

Lag vår første sang


Det vi må gjøre er å lage objektet som lar oss lagre de nødvendige verdiene i databasen, for dette skal vi lage et objekt som heter sang:
 sang = Sanger.ny
For senere å lagre den med følgende kommando:

Dette gir oss allerede en basisplattform for å inkludere informasjonen i databasen vår, la oss se hva konsollen skal vise på dette tidspunktet:

Når dette er gjort, kan vi lagre dataene for det. Mens vi fortsatt er i konsollen, skal vi legge til attributtene til objektet vårt en etter en, la oss se:

 song.title = “Ny sang” song.duration = “315” song.release_date = Date.new (2010) song.save
Hver av de forrige instruksjonene lagret i sangobjektet og utførte metoden lagre alt dette er lagret i databasen. Vi ser i det følgende bildet prosessen vi har utført.

Det merker vi også Rubin Det er store og små bokstaver så vi må være forsiktige med hvordan vi skriver klassene våre, siden det i konsollen var en feil da vi skrev klassen Dato, siden Dato ble skrevet, som ble oppdaget umiddelbart. Til slutt, hvis vi vil konsultere lagrede sanger, er det nok å skrive følgende instruksjon:

 Sanger. Alt
Vi kan også gjøre rede for hvor mange poster vi har med følgende.
 Sanger. Antall
For å fullføre, la oss se svaret vi mottok i konsollen vår når vi utførte disse to kommandoene.

Vi har satt inn vår første post og har konsultert den med hell, og dermed lært hvordan vi bruker databasen med Sinatra, selv om den mest observante kan ha innsett at alt vi gjorde var i Rubin, og dette var den gode ideen, for å demonstrere hvordan det å vite Rubin vi kan jobbe med Sinatra uten å ha mange komplikasjoner.

wave wave wave wave wave