Wbrew pozorom, szyk wyrazów w tytule jest poprawny. Ale zacznijmy od początku.
Od pewnego czasu w różnych miejscach sieci migała mi nazwa rewolucyjnego – jakoby – frameworka o nazwie Ruby on Rails. Framework jest pewnym szkieletem, o który można oprzeć swoją aplikację – dzięki czemu nie trzeba się martwić np. o przejrzysty układ katalogów, o procedury obsługi bazy danych, etc. Do tej pory programowałem głównie w PHP i uważałem, że język ten jest całkiem przyjemny i dobrze nadaje się do zastosowań, do których go używam. Stosowanie frameworków PHP uważałem raczej za stratę czasu i ograniczenie elastyczności (chyba, że mój własny prosty schemat, wg. którego budowałem większość aplikacji, można nazwać frameworkiem).
Jednakże, jak już powiedziałem, buszując w Internecie zacząłem dość często natrafiać na strony poświęcone Ruby on Rails. Trafiłem tak na blog Jarosława Zabiełły, na polską stronę Railsów, wreszcie na stronę główną i na 15-minutowy filmik (screencast). Filmik ten przedstawiał ni mniej ni więcej, a tworzenie (od zera) systemu obsługi bloga. Zainteresowało mnie to – blog w 15 minut?
Poszperałem dalej. Zwykle z nieufnością podchodzę do sformułowań w stylu: „programowanie aplikacji internetowych nigdy nie było tak proste!”, jednak pewne argumenty (np. niesamowita szybkość i oszczędność kodu) powtarzały się we wszystkich miejscach poświęconych RoR.
Czym więc właściwie są te Railsy?
Jak już napisałem powyżej, Ruby on Rails to framework, znakomicie ułatwiający tworzenie aplikacji internetowych w języku Ruby. Język Ruby jest językiem stworzonym 12 lat temu w Japonii. Jest on w pełni obiektowy i pozwala dowolnie się modyfikować (można np. sposób, w jaki język obsługuje liczby całkowite). Railsy zostały stworzone kilka lat temu przez Duńczyka – Davida Heinemeiera Hanssona. Stanowią one kompletny i jednolity system, pozwalający tworzyć aplikacje w oparciu o architekturę (jak to strasznie brzmi!) Model-Widok-Kontroler (MVC).
Po zapoznaniu się z informacjami nt. RoR, pomyślałem, że jeśli wszystko co do tej pory przeczytałem jest prawdą, to jest to system nadający się idealnie dla mnie. Wizja systemu, który sam wykona za mnie najczarniejszą robotę (komunikacja z bazą danych na przykład) bardzo mi się spodobała. Tak bardzo, że postanowiłem zakupić książkę i po prostu się Railsów nauczyć. Niestety, w ofercie polskiego wydawcy nie znalazłem nic, co by mnie szczególnie zainteresowało. Znalazłem natomiast (już na innych stronach) opis książki Agile Web Development with Rails. Książka ta miała pochlebne recenzje. Jak jednak sprowadzić sobie tę książkę z zagranicznego wydawnictwa? Z pomocą przyszedł Empik.
Zamówiłem więc w niedzielę wieczorem. We wtorek rano dostałem informacje, że mogę odebrać książkę w wybranym punkcie. Tekst z tyłu okładki wyglądał zachęcająco: Twoim zadaniem jest napisać wysokiej jakości, pięknie wyglądającą aplikację internetową. Ma być gotowa na jutro, ale będziesz się nią opiekował przez lata. Chcesz użyć sztuczek takich jak AJAX by uczynić swoje aplikacje prostsze w obsłudze i lepiej odpowiadające potrzebom klientów. Chcesz również użyć technik takich jak REST, by Twoje aplikacje mogły łatwo współdziałać z innymi aplikacjami. Ruby on Rails może być tym, czego szukasz.
No i zacząłem czytać. Dawno nie miałem takiej frajdy. Pomyślałem, że jeśli chcę dobrze nauczyć się tego języka i tego frameworka, to będę sumiennie wykonywał krok po kroku wszystko tak, jak jest to zapisane w książce. Jest to strasznie fajne. W dzieciństwie lubiłem układać budowle z klocków LEGO, zgodnie z zamieszczonymi instrukcjami (by później rzecz jasna utworzyć coś własnego). Nauka RoR przypomina z Agile Web Development przypomina mi tamte zabawy. Czemu tak mi się te Railsy podobają? Otóż:
- Pozwalają zachować porządek. Każdy element aplikacji ma tu swoje miejsce, nazwę i zakres działań – wszystko ustalone z góry. Nie muszę się martwić o wymyślenie struktury tego wszystkiego – Rails robi to za mnie.
- Są jednolite i konsekwentne. Bardzo lubię, gdy coś jest konsekwentne. Tutaj wszystkie stosowane konwencje (np. nazwy obiektów) są ustalone i przestrzegane. W PHP panuje pod tym względem pełna samowola (do niektórych funkcji można się dostać jedynie tworząc odpowiedni obiekt, nazwy niektórych funkcji sanierozdzielone, inne są_rozdzielone_podkreśleniami).
- Posiadają ActiveController. Od długiego czasu szukałem do PHP jakiegoś systemu, który odczytałby stworzoną przez mnie bazę danych i na jej podstawie stworzył odpowiednie klasy, ze wszystkimi zależnościami, z możliwością rozszerzenia, itd. ActiveController robi to wszystko przy minimalnym udziale użytkownika (dyrektywy w stylu belongs_to lub has_many). Żadnej dodatkowej konfiguracji!
- Bajecznie prosta obsługa AJAX-a. Możliwe jest uzyskanie nieprzeładowujących się stron dzięki zamianie jedynie kilku linii.
Myślę, że takich takich pozytywnych cech jest więcej – zapewne coś jeszcze o RoR pojawi się na blogu. Polecam.