Управление на база данни със Sinatra

След като нашето уеб приложение е дефинирано и вече знаем какво трябва да постигнем, много пъти е необходимо да се постигне форма на постоянство на данните, това се изразява в съхраняване на получените от него данни някъде и след това да се използва и това прави базата данни двигатели за нас.

След като имаме нужда нашите данни да продължат да съществуват в приложенията, е когато трябва да потърсим или да разберем как да се справим с тези операции и въпреки че днес може да звучи сложно, има много инструменти, които улесняват нашата работа, например има ORM които ни дават възможност да създаваме структури, които са независими от двигателя, така че едва ли някога ще напишем чиста заявка.

В случай че Синатра Има няколко скъпоценни камъни, които вече отговарят за връзките и администрирането на базите данни, така че ще видим какви са те и как можем да ги интегрираме в нашето приложение.

Изберете механизма за бази данни


Първата стъпка, която трябва да направим, е да изберем правилния механизъм за бази данни за нашето приложение, има много решения на пазара и всяко с различна цел, в случай на Синатра като цяло ще използваме MySQL или PostgreSQL в производствена среда или в противен случай SQLite в средите за развитие.

В случая с този урок, ние избрахме последната опция поради лесната й инсталация и скоростта, с която можем да започнем работа.

Инсталиране на SQLite


За да инсталираме този двигател, първо отиваме на официалния му уебсайт и изтегляме пакета, съответстващ на нашата система, много дистрибуции в Linux Те вече идват с инсталиран и работещ двигател, така че ще видим как да извършим този процес Windows.

В предишното изображение виждаме, че трябва да изтеглим предварително компилираните двоични файлове, след като това стане, ще ги разархивираме в папка, наречена SQLite в нашия C: диск и добавяме тази папка като променлива на средата в нашата ПЪТ. След като горното е направено при писане sqlite3 в нашата конзола трябва да видим нещо като следното.

След като тази стъпка бъде покрита, сега трябва да изтеглим съответния драйвер за Руби, затова в нашата командна конзола трябва да напишем следното:

 скъпоценен камък инсталирайте sqlite3
Това трябва да ни даде резултат като следния, показващ, че инсталирането на скъпоценния камък е било успешно, за да се свържем с SQLite.

ORM


Тъй като разполагаме с нашия механизъм за бази данни, сега е ред да получим ORMТова е инструмент, който ни позволява да преобразуваме таблиците на база данни в обекти, като по този начин можем да работим с тях по -лесно в нашето приложение.

ПредимствоОсновното предимство на ORM е, че ни позволява да бъдем независими от двигателя, тъй като без да се налага да пишем директно SQL код, можем просто да променим конфигурацията и да направим съответните миграции.

Разбира се, има много възможности за работа Руби и със Синатра, обаче един от най -приятелските за начало е DataMapper.

Инсталирайте DataMapper


Инсталирането на това ORM Не може да бъде по -просто и това благодарение на факта, че той също е скъпоценен камък, така че просто трябва да изпълним няколко инструкции в нашата конзола, първата е следната, която ни помага да получим базовия компонент:
 gem install data_mapper
Това трябва да даде резултат, подобен на следния:

Сега, когато имаме база, просто трябва да инсталираме драйвера, така че DataMapper може да взаимодейства с SQLite, за това трябва да инсталираме следния скъпоценен камък:

 скъпоценен камък инсталирайте dm-sqlite-адаптер
Това ще позволи на нашите приложения да създават таблици и да използват базата данни, без да се налага да пишат SQL код.В крайна сметка инсталацията на драйвера трябва да ни даде следното съобщение в нашата конзола.

Свържете се с база данни


Тъй като имаме инсталирани зависимости, това, което трябва да направим сега, е да продължим да тестваме как работи новата ни среда за устойчивост на данните, за това ще създадем клас. Този клас ще бъде основата, която ще ни позволи да създадем таблица и да съхраняваме записи в нея, това също ни дава възможност да не се налага да пишем код SQL директно, така че в бъдеще, когато трябва да използваме друг механизъм на база данни, просто промяна на конфигурацията ще бъде достатъчна.

В нашата папка с приложения ще създадем файл, наречен песни.rb, това, което този клас трябва да направи, е да има картата за това как можем да съхраняваме песен в базата данни, да видим съдържанието и след това да обясним какво прави всяка част от нея:

 изискват 'dm-core' изискват 'dm-миграции' DataMapper.setup (: по подразбиране, "sqlite3: // # {Dir.pwd} /musica.db") клас Песните включват DataMapper :: Resource property: id, Serial property: title, String property: duration, Integer property: release_date, Date end DataMapper.finalize
На първо място трябва да направим това изискват от ключовите компоненти на DataMapper в такъв случай dm-ядро Y dm-миграции. След това създаваме конфигурационен ред, който ни позволява да използваме на първо място SQLite за незабавно създаване на файла, в този случай music.dbАко файлът вече съществува, това означава, че базата данни вече съществува, така че връзката просто ще бъде осъществена.

Най -накрая правим нашия клас песни който ще съдържа поредица от атрибути, които го идентифицират и включване на друг клас DataMapper. С това сме готови за следващата фаза, която е да тестваме нашето приложение. Тъй като не сме създали нищо, което да виждаме в браузъра си, е подходящ момент да използваме Ruby интерактивна конзола (irb), което ще ни позволи да проверим дали всичко е на прав път, освен че ще ни позволи да свикнем с DataMapper.

Опитайте нашето приложение


На първо място в нашия терминал или конзола трябва да отидем в папката, където сме съхранили нашия файл песни.rb тъй като това е ключът към разработването на нашия пример, веднъж там трябва да стартираме нашата интерактивна конзола Руби като напишете командата:
 irb
След като го стартираме, можем да го направим изискват от нашия клас, като поставите командата:
 изискват "./ песни"
Това трябва да върне true, ако е успешно, което можем да видим на следното изображение.

Следващото действие трябва да използваме инструмента auto_migrate на DataMapper, това ще ни позволи да създадем таблицата с атрибутите на нашия клас в съответния файл с база данни. За целта просто пишем следното:

 Songs.auto_migrate!
Което създава необходимата структура, за да може да съхранява записите.

Създайте първата ни песен


Сега трябва да създадем обект, който ще ни позволи да съхраняваме необходимите стойности в базата данни, за това ще създадем обект, наречен song:
 песен = Песни.ново
За да го съхраните по -късно със следната команда:

Това вече ни дава базова платформа за включване на информацията в нашата база данни, нека видим какво трябва да показва конзолата на този етап:

След като това стане, можем да съхраняваме данните за него. Докато все още сме в конзолата си, ще добавяме атрибутите на нашия обект един по един, нека видим:

 song.title = „Нова песен“ song.duration = „315“ song.release_date = Date.new (2010) song.save
Всяка от предишните инструкции се съхраняваше в обекта на песента и изпълняваше метода запишете всичко това се съхранява в базата данни. На следващото изображение виждаме процеса, който сме извършили.

Отбелязваме също, че Руби то е различаващ главни от малки букви така че трябва да внимаваме с начина, по който пишем нашите класове, тъй като в случая на конзолата е имало грешка при писането на класа Дата, тъй като е написана дата, която е открита незабавно. И накрая, ако искаме да се консултираме със съхранените песни, достатъчно е да напишем следната инструкция:

 Песни.всички
Можем също така да направим сметка колко записи имаме, със следното.
 Songs.count
За да завършим, нека видим отговора, получен в нашата конзола при изпълнение на тези две команди.

Вмъкнахме първия си запис и го консултирахме успешно, като по този начин се научихме как да използваме базата данни Синатра, въпреки че най -наблюдателните може би са осъзнали, че всичко, което направихме, е в Руби, и това беше страхотната идея, да се демонстрира как се знае Руби можем да работим с Синатра без много усложнения.

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave