Ruby on Rails - Migracje (Migration)
Witam czytelników, post dzisiaj będzie o migracji w RoR.
Baza danych
Ciężko cokolwiek powiedzieć o migracji nie wspominając o konstrukcji bazy danych.
Rails tworząc strukturę bazy danych tworzy dodatkowo swoją tabele, która nazywa się (przynajmniej u mnie) 'schema_migrations'. Umieszczona jest w niej jedna kolumna o nazwie 'version'. I to jest własnie wersja migracji bazy danych.
A więc co to jest migracja?
Migracja jest to czynność wykonywana w trakcie podnoszenia wersji aplikacji lub bazy danych. Są w niej umieszczone zmiany na bazie danych, które powinny nastąpić wraz z migracją. Załóżmy, że zakładamy pustą bazę danych. Posiadając klasy migrujące jesteśmy w stanie poprzez uruchomienie skryptu stworzyć całą strukturę bazy od początku. Jednakże, gdy posiadamy bazę z starą już migracją, zmieniona ona zostanie tylko na podstawie migracji nowszych od tych, które są już wgrane.
Jak to wygląda?
class CreateOrders < ActiveRecord::Migration[5.0] def change create_table :orders do |t| t.string :name t.integer :status t.float :cost t.timestamps end end end
Powyżej mamy przykład stworzenia tabeli z wartościami nazwa o typie String, status o typie integer oraz koszt o typie float, dodatkowo jest tworzony timestamps. Timestamps są to dodatkowe kolumny dla naszej encji, które odpowiadają za datę stworzenia wiersza (created_at) oraz modyfikacji wiersza (updated_at).
Dodanie referencji do istniejących już tabel wygląda następująco:
class AddOrderRefToThings < ActiveRecord::Migration[5.0] def change add_reference :things, :order, foreign_key: true end end
Wykorzystujemy tutaj słowo kluczowe add_reference. Trzeba jednak pamiętać o wersji RoR'a, ponieważ metoda powstała dopiero w wersji 4.0.2 (wcześniej korzystało się ze składni zmiany tabeli i dodania referencji do niej).
W migracji możemy wykonać wszystkie akcje, które potrzebujemy do stworzenia swojej bazy danych. Nie potrzebujemy sami angażować się w przygotowywanie zapytań. Jednocześnie pisząc migracje możemy wykonać ją na różnych bazach danych (aktualnie oficjalnie wspierane MySQL, PostgreSQL, SQLite, SQL Server i Oracle, ale istnieją narzędzia wspomagające MongoDB).
Podsumowując
Migracja w RoR pozwala na nie pisanie sztywnych zapytań SQL w naszej aplikacji. Pozwala to na uruchomienie aplikacji na różnych bazach danych. Szeroką nadinterpretacją jest porównanie tego do JPA, ale cel tego narzędzia jest podobny. Pomóc programistą z obsługą bazy danych.
Programowanie w Rubym jest bardzo fajne, szczególnie jeśli chcemy zbudować nowoczesne witryny www. Tworzenie stron internetowych https://dolp.pl/strony-www jest również przyjemne w innych systemach i działa tak samo jak i inne.
ReplyDelete