Gdy nasza aplikacja webowa jest już zdefiniowana i wiemy już, co musimy osiągnąć, niejednokrotnie konieczne jest osiągnięcie pewnej formy trwałości danych, przekłada się to na przechowywanie gdzieś pozyskanych przez nią danych, a następnie ich wykorzystanie i to właśnie sprawia, że baza danych silniki dla nas.
Mając wtedy potrzebę utrwalenia naszych danych w aplikacjach, musimy szukać lub rozumieć, jak obsługiwać te operacje i chociaż dziś może to wydawać się skomplikowane, istnieje wiele narzędzi ułatwiających naszą pracę, na przykład istnieje ORM które dają nam możliwość tworzenia struktur niezależnych od silnika, dzięki czemu prawie nigdy nie napiszemy czystego zapytania.
W przypadku Synatra Istnieje kilka perełek, które są już odpowiedzialne za połączenia i administrację bazami danych, więc zobaczymy, czym one są i jak możemy je zintegrować z naszą aplikacją.
Wybierz silnik bazy danych
Pierwszym krokiem jaki musimy zrobić to wybrać odpowiedni silnik Bazy Danych dla naszej aplikacji, na rynku jest wiele rozwiązań i każde z nich ma inne przeznaczenie, w przypadku Synatra będziemy generalnie używać MySQL lub PostgreSQL w środowisku produkcyjnym lub w przypadku jego niepowodzenia SQLite w środowiskach programistycznych.
W przypadku tego samouczka zdecydowaliśmy się na ostatnią opcję ze względu na łatwość jej instalacji i szybkość, z jaką możemy rozpocząć pracę.
Instalowanie SQLite
Aby zainstalować ten silnik, najpierw wchodzimy na jego oficjalną stronę internetową i pobieramy pakiet odpowiadający naszemu systemowi, wiele dystrybucji w Linux Są już wyposażone w ten silnik zainstalowany i sprawny, więc zobaczymy, jak przeprowadzić ten proces za Okna.
Na poprzednim obrazku widzimy, że musimy pobrać wstępnie skompilowane pliki binarne, po wykonaniu tej czynności rozpakujemy je w folderze o nazwie SQLite w naszym dysku C: i dodajemy ten folder jako zmienną środowiskową w naszym ŚCIEŻKA. Po wykonaniu powyższych czynności podczas pisania sqlite3 w naszej konsoli powinniśmy zobaczyć coś takiego.
Po omówieniu tego kroku musimy teraz pobrać odpowiedni sterownik dla Rubin, dlatego w naszej konsoli poleceń musimy napisać:
klejnot zainstalować sqlite3Powinno to dać wynik podobny do poniższego, wskazujący, że instalacja klejnotu powiodła się w celu połączenia z SQLite.
ORM
Skoro mamy nasz silnik bazodanowy, teraz kolej na uzyskanie ORMJest to narzędzie, które pozwala nam konwertować tabele Bazy Danych na obiekty, dzięki czemu możemy łatwiej z nimi pracować w naszej aplikacji.
KorzyśćGłówna zaleta ORM jest to, że pozwala nam być niezależnym od silnika, ponieważ nie musimy bezpośrednio pisać kodu SQL, możemy po prostu zmienić konfigurację i wykonać odpowiednie migracje.
Oczywiście istnieje wiele opcji do pracy Rubin i z Synatra, jednak jednym z najbardziej przyjaznych na początek jest DataMapper.
Zainstaluj DataMapper
Instalacja tego ORM Prościej być nie może, a to dzięki temu, że jest to również perełka, więc po prostu musimy wykonać kilka instrukcji w naszej konsoli, pierwsza to ta, która pomoże nam uzyskać podstawowy komponent:
klejnot zainstaluj data_mapperPowinno to dać wynik podobny do następującego:
Teraz, gdy mamy już bazę, wystarczy zainstalować sterownik, aby DataMapper może wchodzić w interakcje z SQLite, w tym celu musimy zainstalować następujący klejnot:
klejnot zainstalować dm-sqlite-adapterTo pozwoli naszym aplikacjom tworzyć tabele i korzystać z Bazy Danych bez konieczności pisania kodu SQL.Na koniec instalacja sterownika powinna dać nam następujący komunikat w naszej konsoli.
Połącz się z bazą danych
Ponieważ mamy zainstalowane zależności, musimy teraz przystąpić do testowania, jak działa nasze nowe środowisko utrwalania danych, w tym celu stworzymy klasę. Ta klasa będzie podstawą, która pozwoli nam stworzyć tabelę i przechowywać w niej rekordy, daje nam to również możliwość nie pisania kodu SQL bezpośrednio, dzięki czemu w przyszłości, gdy będziemy musieli skorzystać z innego silnika Bazy Danych, wystarczy po prostu zmiana konfiguracji.
W naszym folderze aplikacji utworzymy plik o nazwie piosenki.rb, to, co ta klasa musi zrobić, to mieć mapę tego, jak możemy przechowywać utwór w bazie danych, zobaczmy zawartość, a następnie wyjaśnijmy, co robi każda jej sekcja:
require 'dm-core' require 'dm-migrations' DataMapper.setup (: default, "sqlite3: // # {Dir.pwd} /musica.db") Utwory zawierają DataMapper :: Właściwość zasobu: id, Właściwość Serial: tytuł, właściwość String: czas trwania, właściwość Integer: data_publikacji, data zakończenia DataMapper.finalizePrzede wszystkim musimy zrobić wymagać kluczowych składników DataMapper w tym przypadku dm-rdzeń Tak dm-migracje. Następnie tworzymy linię konfiguracyjną, która w pierwszej kolejności pozwala nam korzystać SQLite aby natychmiast utworzyć plik, w tym przypadku muzyka.dbJeśli plik już istnieje, oznacza to, że Baza danych już istnieje, więc połączenie zostanie po prostu nawiązane.
W końcu robimy naszą klasę piosenki który będzie zawierał szereg identyfikujących go atrybutów oraz włączenie innej klasy DataMapper. Dzięki temu jesteśmy gotowi do kolejnego etapu, jakim jest przetestowanie naszej aplikacji. Ponieważ nie stworzyliśmy niczego, co można by zobaczyć w naszej przeglądarce, jest to dobry moment, aby użyć Konsola interaktywna Ruby (irb), co pozwoli nam sprawdzić, czy wszystko jest na dobrej drodze, a także pozwoli nam się przyzwyczaić do DataMapper.
Wypróbuj naszą aplikację
Przede wszystkim w naszym terminalu lub konsoli musimy przejść do folderu, w którym zapisaliśmy nasz plik piosenki.rb ponieważ jest to klucz do rozwoju naszego przykładu, tam musimy uruchomić naszą interaktywną konsolę Rubin wpisując polecenie:
irbPo uruchomieniu możemy to zrobić wymagać naszej klasy poprzez umieszczenie komendy:
wymagaj "./utwory"To musi zwrócić true, jeśli się powiedzie, co widać na poniższym obrazku.
W następnym akcie musimy użyć narzędzia auto_migracja z DataMapper, to pozwoli nam stworzyć tabelę z atrybutami naszej klasy w odpowiednim pliku bazy danych. W tym celu po prostu piszemy:
Songs.auto_migrate!Co tworzy niezbędną strukturę, aby móc przechowywać zapisy.
Stwórz naszą pierwszą piosenkę
Teraz musimy stworzyć obiekt, który pozwoli nam przechowywać niezbędne wartości w Bazie Danych, w tym celu stworzymy obiekt o nazwie song:
piosenka = Piosenki.nowyAby później zapisać go za pomocą następującego polecenia:
To już daje nam podstawową platformę do uwzględnienia informacji w naszej bazie danych, zobaczmy, co konsola powinna pokazać w tym momencie:
Po wykonaniu tej czynności możemy przechowywać dane do tego celu. Będąc jeszcze w naszej konsoli będziemy dodawać atrybuty naszego obiektu jeden po drugim, zobaczmy:
song.title = „Nowa piosenka” song.duration = „315” song.release_date = Date.new (2010) song.saveKażda z poprzednich instrukcji była przechowywana w obiekcie piosenki i wykonywała metodę ratować wszystko to jest przechowywane w Bazie Danych. Na poniższym obrazie widzimy proces, który przeprowadziliśmy.
Zauważamy również, że Rubin To jest wielkość liter ma znaczenie musimy więc uważać z tym jak piszemy nasze klasy, skoro w przypadku konsoli wystąpił błąd podczas pisania klasy Data, ponieważ Data została napisana, która została wykryta natychmiast. Na koniec, jeśli chcemy zapoznać się z przechowywanymi utworami, wystarczy napisać następującą instrukcję:
Piosenki.wszystkieMożemy również zliczyć, ile mamy rekordów, z następującymi.
Liczba utworówNa koniec zobaczmy odpowiedź otrzymaną w naszej konsoli podczas wykonywania tych dwóch poleceń.
Wprowadziliśmy nasz pierwszy rekord i pomyślnie go skonsultowaliśmy, dzięki czemu uczymy się korzystać z Bazy danych z Synatra, chociaż najbardziej spostrzegawczy mógł zdać sobie sprawę, że wszystko, co zrobiliśmy, było w Rubin, i to był świetny pomysł, aby zademonstrować, jak wiedząc Rubin możemy pracować Synatra bez wielu komplikacji.