Ruby on Rails (w skrócie RoR lub Rails) jest nowoczesnym frameworkiem do tworzenia aplikacji webowych storzonym w języku Ruby. Stworzył go w 2004 roku David Heinemeier-Hanson.
Filozofia Rails opiera się o dwie reguły: DRY - don't repeat yourself oraz CoC - convention over configuration. DRY nakazuje, aby wszelkie dane i informacje umieszczać w jednym miejscu. CoC oznacza zastosowanie sprawdzonych i zalecanych domyślnych ustawień dzięki czemu niezbędna konfiguracja ograniczona jest do minimum, co pozwala na szybszą i bardziej wydajną pracę.
Architektura aplikacji pisanych w Ruby On Rails oparta jest o wzorzec Model-View-Controller (MVC). Model odpowiada za operacje na danych, które pobiera od niego kontroler i przekazuje do widoku. W widoku dane są formatowane i wyświetlane końcowemu użytkownikowi aplikacji.
Na Ruby on Rails składają się 3 podstawowe pakiety:
ActionController i ActionView są wspólnie określane jako ActionPack.
Dodatkowo udostępniano pakiety umożliwiające łatwe wykonywanie najczęstszych zadań:
ActionMailer - umożliwia elastyczne tworzenie oraz rozsyłanie e-maili.
ActiveResource - umożliwia mapowanie zasobów REST jako modeli
ActiveSupport - dostarcza najczęściej używanych mechanizmów, jak callbacki lub metody formatujące dane
Ruby on Rails wspiera pokaźną ilość baz danych:
Szczególny nacisk kładziony jest na bezpieczeństwo. Między innymi automatycznie zabezpieczane są zapytania SQL oraz wbudowana jest ochrona przed atakami typu CSRF.
W Ruby on Rails intesywnie wykorzystywane są pluginy. Niezwykłe możliwości języka Ruby pozwalają rozszerzać framework niemal w dowolny sposób. Stale rosnąca społeczność Rails dostarcza pluginy dostarczające nawet najbardziej niszowe funkcjonalności.
Framework jest dostępny na licencji MIT. Każdy ma dostęp do kodu i może go dowolnie modyfikować. RoR udostępniany jest bez opłat.
Do uruchomienia aplikacji napisanej w Rails potrzebny jest serwer WWW. Najczęściej używane są mongrel, thin, lighthttpd, apache i nginx.
Do najpopularniejszy aplikacji webowych stworzonych w rails należą: