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.

Comments

  1. 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

Post a Comment

Popular posts from this blog

Why TDD is bad practice?

How correctly imitate dependencies?

Software development using Angular 5 with Spring Boot