Ruby on Rails - logo

Ruby on Rails rr .net

Ruby on Rails jest to framework open source, często nazywany RoR lub po prostu Rails. Służy do szybkiego tworzenia aplikacji webowych. Stworzył do głównie duński programista David Heinemeier Hansson. Został napisany w języku Ruby z użyciem architektury MVC (ang. Model-View-Controller).

Ruby on Rails i jego główne założenia

  • łatwość, szybkość i przyjemność pisania kodu,
  • reguła DRY (ang. Don’t Repeat Yourself), która polega na unikaniu tej samej pracy w różnych miejscach,
  • reguła Convention Over Configuration, która polega na sprowadzeniu do minimum niezbędnej konfiguracji przez zastępowanie jej gotowymi domyślnymi, zalecanymi wzorcami,
  • możliwość użycia wtyczek, które w sposób błyskawiczny rozszerzają aplikacje o rozmaite funkcje, jak logowanie, przesyłanie i skalowanie obrazków, czy tagowanie.

Budowa

    Ruby on Rails to framework, który jest tworzony przez następujące elementy:
  • ActiveRecord - mechanizm ORM (Object-Relational mapping) dla Ruby, odpowiedzialny za komunikację z bazami danych i persystencję,
  • ActiveModel - odpowiada za tworzenie modeli w architekturze MVC,
  • ActionPack - odpowiada za obsługę zapytań i odpowiedzi HTTP, definiuje m.in. kontrolery poprzez klasę ActionController,
  • ActionView - warstwa widoku w modelu MVC,
  • ActiveSupport - jest zbiorem użytecznych dodatków do standardowej biblioteki Ruby, który zawiera m. in. rozszerzenia klas String czy Time,

Ruby on Rails - z czego jeszcze się składa?

  • ActionMailer - biblioteka, która służy (najczęściej poprzez aplikację Rails) do wysyłania wiadomości e-mail,
  • ActiveJob - jest interfejsem służącym do definiowania prac w tle, które odbywają się poza cyklem zapytanie-odpowiedź,
  • ActionCable - komponent do obsługi technologii WebSocket,
  • ActiveStorage - komponent do obsługi wgrywania i przechowywania plików,
  • ActionText - framework oparty o otwarty edytor Trix, który służy do tworzenia zaawansowanych edytorów tekstu na stronach internetowych.

Każda wymieniona część może zostać zainstalowana oddzielnie. Może to się odbyć chociażby za pomocą menedżera pakietów RubyGems. Dystrybucję Rails tworzy także konsolowy program rails, który generuje drzewo katalogów nowego projektu.

Serwer

Na odpowiednim serwerze oparte jest działanie aplikacji, która została napisana z użyciem Rails. Poza standardowym serwerem, który opiera się na bibliotece WEBrick (używanym jednak zwykle podczas tworzenia aplikacji) dostępny jest obecnie serwer Mongrel. Raz uruchomiony serwer przypisuje nadchodzące żądania (requests) odpowiednim kontrolerom i na podstawie ich działania zwraca do klienta odpowiedź (response).

Serwer Rails może działać samodzielnie (bardzo rzadko stosowane – jeden Mongrel potrafi obsłużyć jedno żądanie naraz) lub być ukryty za innym serwerem HTTP jak Apache, Lighttpd czy Nginx. Wówczas serwer zewnętrzny równoważy obciążenie wszystkich serwerów aplikacji. Phusion Passenger jest innym rozwiązaniem, które zdobywa coraz więcej zwolenników. Znany jest on także jako mod_rails lub mod_rack. Dostępny jest on dla Apache'a (jako moduł) i Nginxa (wymaga wkompilowania w serwer). Zaletą rozwiązania jest jego automatyzacja – po odpowiednim ustawieniu ścieżek w pliku konfiguracyjnym, Passenger odpowiednio wywołuje kolejne wątki aplikacji w ramach potrzeb.

Ruby on Rails - sposób działania

Rails opiera się o architekturę MVC. Po wyświetleniu widoku (w tym przypadku wygenerowanej strony HTML) klient wysyła do aplikacji żądanie - klikając odpowiedni link na stronie lub wypełniając formularz. Żądanie jest przyjmowane przez kontroler, który generuje odpowiedź w formie widoku wysyłanego do klienta (najczęściej kontroler w celu wygenerowania odpowiedzi pobiera dane z modelu, który w Rails implementowany jest jako relacyjna baza danych).

Bazy danych

Rails może współpracować z różnymi rodzajami baz danych. Jedyny warunek, jaki tutaj zachodzi, to istnienie odpowiedzialnej za jej obsługę biblioteki dla Ruby oraz obsługa danej bazy przez ActiveRecord - adaptery wszystkich popularnych typów baz danych były zawarte w dystrybucji ActiveRecord, jednak począwszy od 2.2 wymagają osobnej instalacji przez RubyGems.

    Obecnie obsługiwane są następujące bazy danych:
  • MySQL,
  • PostgreSQL,
  • Oracle,
  • Microsoft SQL Server,
  • SQLife (w wersji 2.x i 3.x),
  • IBM DB2,
  • OpenBase,
  • Sybase,
  • Firebrid.

Kod Rails powinien współpracować ze wszystkimi typami danych - w taki sam sposób. Ma to miejsce wówczas, gdy programista nie użyje jawnie specyficznych dla danej bazy konstrukcji SQ L. Wbudowany mechanizm migracji (ang. migrations), który posiada Rails, pozwala tworzyć, zmieniać i kontrolować schemat tabel w bazie danych, niezależnie od jej typu, używając jedynie kodu Ruby.

Ruby on Rails - bezpieczeństwo

    W ramach Ruby on Rails oferowane są różne mechanizmy, które podnoszą domyślne bezpieczeństwo stworzonej w nim aplikacji. Mechanizmami tymi są m.in.:
  • Wartości przed wyświetleniem ich w widoku są automatycznie escape'owane;
  • Zabezpieczenia przed SQL injection poprzez m.in. używanie placeholderów w zapytaniach;
  • Zabezpieczenia przed cross-site request forgery (CSRF token);
  • Zabezpieczenia przed cross-site scripting (XSS);
  • Opcjonalne szyfrowanie i podpisywanie cookies (domyślne od wersji 4).

Dla kogo jest Ruby on Rails?

Dla każdego - małych firm, organizacji non-profit czy też bardzo dużych podmiotów. Może być używany jako narzędzie tworzenia praktycznie każdego rodzaju aplikacji internetowej, czy będzie to oprogramowanie do współpracy online, tworzenia społeczności, e-commerce, zarządzania treścią czy statystyk.