Ruby on Rails
Ruby on Rails (często skracany do RoR lub po prostu Rails) to otwartoźródłowy framework do tworzenia aplikacji webowych napisany w języku Ruby. Stworzony w 2004 roku przez Davida Heinemeiera Hanssona, spopularyzował podejście, w którym programista skupia się na logice biznesowej, a framework dostarcza gotowy szkielet aplikacji, warstwę bazodanową i mechanizmy routingu.
Na czym polega Ruby on Rails
Rails opiera się na dwóch zasadach, które definiują jego charakter. Pierwsza to konwencja ponad konfiguracją (convention over configuration): jeśli trzymasz się przyjętych nazewnictw i struktury katalogów, framework sam „domyśla się”, jak połączyć model z tabelą w bazie czy kontroler z widokiem — bez pisania rozbudowanych plików konfiguracyjnych. Druga to DRY (Don't Repeat Yourself), czyli unikanie powielania kodu. Architektonicznie Rails realizuje wzorzec MVC (Model–View–Controller), rozdzielając dane, logikę i prezentację.
Sercem warstwy danych jest Active Record — mechanizm ORM, który mapuje obiekty Ruby na wiersze w bazie, najczęściej PostgreSQL lub MySQL. Funkcjonalność rozszerza się przez gemy — gotowe biblioteki instalowane menedżerem Bundler. Rails ułatwia też budowę API zgodnych z REST, co czyni go dobrym zapleczem dla aplikacji SPA i mobilnych.
Zastosowanie w praktyce
Na Rails zbudowano m.in. GitHub, Shopify, Basecamp i wczesne wersje wielu znanych startupów — nieprzypadkowo, bo framework słynie z szybkiego przechodzenia od pomysłu do działającego MVP. Generatory kodu pozwalają w kilka minut postawić szkielet panelu z operacjami CRUD, a wbudowane mechanizmy migracji porządkują zmiany w schemacie bazy. Aplikacje Rails uruchamia się na serwerach aplikacyjnych takich jak Puma, zwykle za serwerem proxy Nginx. Wdrożenie wymaga środowiska z interpreterem Ruby, bazą danych i menedżerem procesów, dlatego dobrze czują się na serwerach VPS z pełną kontrolą nad konfiguracją.
Powiązane pojęcia
Najczęstsze pytania
Do jakich projektów nadaje się Ruby on Rails?
Rails sprawdza się w aplikacjach CRUD, panelach zarządzania, MVP i startupach, gdzie liczy się szybkość dostarczenia działającego produktu. Ze względu na gotowe konwencje i bogaty ekosystem gemów pozwala zbudować pełną aplikację małym zespołem. Mniej naturalny jest w usługach wymagających ekstremalnej wydajności obliczeniowej.
