Programowanie, które nie boli

Subskrybuj RSS A A A
21 sierpnia 2007
Paweł Matyjasek

Ruby on Rails to bardzo prosty do nauczenia się język, który istotnie zwiększa produktywność. Dlatego interesuje się nim coraz więcej programistów PHP i Javy.


Skrypt ten uruchamiamy przez:

rake db: schema: load db/schema.rb

Warto zauważyć, że przedstawiona definicja tabeli nie zawiera wzmianki o kluczu głównym, bo zostaje on utworzony automatycznie (domyślnie jako "id"). Prawdziwą efektywność RoR poznajemy jednak po wygenerowania rusztowania dla tabeli z postami i uruchomieniu serwera:

ruby script/generate scaffold Post
ruby scripts/server


Po wpisaniu w przeglądarce adresu http://127.0.0.1: 3000/posts uzyskujemy dostęp do strony, na której możemy zarządzać wpisami w tabeli. Wprawdzie efekt końcowy daleki jest od ideału, ale można go łatwo dostosować do własnych potrzeb już po krótkiej analizie kodu kontrolera i widoków.

Podobną stronę możemy wygenerować znacznie szybciej za pomocą kilku kliknięć myszy w istniejących środowiskach typu RAD (Rapid Application Development). Dalsze utrzymanie takiego projektu będzie jednak trudniejsze niż w RoR, głównie z powodu wymieszania ze sobą warstw prezentacji i dostępu do danych (nagminne choćby w ASP .Net 2.0).

Mocna strona RoR - migracje

Poważny problem w projektach tworzonych przez kilka osób stanowi zarządzanie zmianami w strukturze bazy danych. Dodanie lub usunięcie nowego pola w tabeli może pociągać za sobą np. konieczność wygenerowania nowych danych testowych, a dystrybucja tych zmian do programistów jest bardzo kłopotliwa.

W Rails problem ten został rozwiązany dzięki "migracjom". Wszelkie zmiany w strukturze bazy są zapisywane w kodzie Ruby i odpowiednio wersjonowane. Za pomocą jednego polecenia możemy bardzo szybko wrócić do poprzedniej wersji bazy lub wprowadzić do niej modyfikacje. Kod ten jest niezależny od konkretnego dostawcy systemu baz danych, zatem późniejsze wdrożenie aplikacji na bazie Oracle czy DB2 nie nastręcza większych problemów.

Rubin ze skazą?

Każda z platform programistycznych jest obarczona pewnymi wadami. W wywiadach twórca Rails nie ukrywa, że framework ten jest zorientowany głównie na programistę (wykonanie dynamicznego kodu Ruby jest dodatkowo obarczone narzutem). Cecha ta może niekorzystnie stawiać RoR pod względem jego zastosowania do tworzenia złożonych i wymagających aplikacji.

Kolejne argumenty przeciwko RoR, które wytacza Cédric Beust, inżynier pracujący w Google, to: Rails jest jedynym frameworkiem webowym pracującym z Ruby (nie funkcjonuje dobór naturalny, który mógłby eliminować słabej jakości rozwiązania); zwolennicy RoR to fanatycy. To ostatnie ma swoje wady i zalety - w razie problemu bardzo szybko uzyskamy pomoc na forum czy grupie newsowej, choć wywyższanie na forach Pythona nad Ruby nie jest najlepszym pomysłem. Opinie użytkowników RoR przybierają niekiedy wymiary humorystyczne, jak np. we wzorowanych na kampanii Maca (Mac vs PC) reklamach porównujących Rails z PHP i Javą (railsenvy.com).

Pojawiają się także głosy krytyki odnośnie do dokumentacji frameworku. Wielu programistów przyzwyczajonych jest do solidnej dokumentacji Suna czy Microsoftu, natomiast istniejąca dokumentacja RoR ma bardzo nierówny poziom.

Podstawowe składniki RoR
Koordynuje pracę widoków (view) oraz modeli w kontekście wzorca projektowego MVC (model-widok-kontroler).

ActionView

Odpowiada za obsługę widoków. Szablony generujące kod html, xml oraz JavaScript.

ActiveRecord Mapper

Obiektowo relacyjny, ułatwiający dostęp do bazy danych za pomocą zestawu operacji CRUD (create, retrieve, update, delete). Realizuje model we wzorcu MVC.

ActiveSupport

Zestaw klas pomocniczych i rozszerzeń biblioteki standardowej Ruby.

Biblioteki JavaScript: Prototype i script.aculo.us.


IronRuby, JRuby- przyszłość RoR?

Dobra znajomość Javy czy języka C# wiąże się z wieloma zyskami: naszą wiedzę o bibliotekach i konwencjach programowania możemy przenieść także na aplikacje mobilne czy desktopowe, działające na różnych platformach sprzętowo-programowych (w przypadku C# i .Net, to głównie rodzina systemów Windows). Za pomocą samego Ruby nie stworzymy więc oszałamiającej aplikacji wykorzystującej Windows Presentation Foundation, ale to może się diametralnie zmienić wraz z nadejściem IronRuby.

W trakcie konferencji Mix'07 inżynierowie z Microsoftu zaprezentowali testową implementację Ruby na platformie .Net - IronRuby. Możliwość wykorzystania .Net Framework, solidnego IDE (Visual Studio) z intellisense (podpowiedzi dla programisty) oraz wygodą debugowania, pozwoli na swobodny wybór platformy programistycznej w zależności od potrzeb programistów i zleceniodawców. Dodajmy jeszcze do tego rozszerzalność serwera webowego - IIS 7 i kto wie, być może już niedługo będziemy się mogli cieszyć także z "IronRuby on Rails"? Oczywiście pojawiają się też sceptyczne opinie; Ola Bini (jeden z twórców JRuby) prognozuje, że prace nad IronRuby będą trwały jeszcze przynajmniej 1,5 roku, głównie ze względu na brak kompletnej specyfikacji języka Ruby.

Znacznie bardziej zaawansowane są prace nad JRuby - implementacją Ruby na platformie Java. Nie dość, że wspiera ona Rails już od maja 2006 r., to ma pełne wsparcie ze strony środowiska NetBeans 5 (milestone 7). Fani RoR mają przy tym swobodę wyboru - mogą pracować z natywnym Ruby (czyli zyskują jedynie solidne IDE) lub z JRuby (co daje dostęp do istniejących bibliotek napisanych w języku Java).

Przede wszystkim wysoka efektywność

Ruby on Rails to doskonałe połączenie sprawdzonych praktyk i kompromisów. Bardzo prosty do nauczenia język, większa produktywność programistów to powody, dla których coraz więcej programistów PHP i Javy interesuje się tym frameworkiem. Zwolennicy Rails twierdzą, że pozwala on dziesięciokrotnie skrócić czas tworzenia aplikacji, ale jak te założenia mają się do praktyki?

Na blogu firmy Relevance, tworzącej projekty zarówno w Javie, jak i RoR, przedstawiono ciekawe porównanie: realizacja aplikacji za pomocą RoR zajmuje od 30% do 50% mniej czasu niż analogicznej aplikacji pisanej w Javie. To o wiele niższy niż prognozowany, ale nadal bardzo dobry wynik, który może być jeszcze poprawiony za pomocą porządnego IDE. To nie wszystko. Martin Fowler, znany autorytet w zakresie wzorców projektowych i kierownik techniczny ThoughtWorks zauważył, że niemal 40% nowych projektów realizowanych przez jego firmę jest obecnie opartych na Ruby on Rails!

Oceń artykuł

średnio: 0 liczba ocen: 0
« wstecz 1  2 

Komentarze (0)

Najnowsze

Państwo do konsolidacji

Obywatele uważają administrację publiczną za jeden organizm. W rzeczywistości jest to kilka tysięcy oddzielnych struktur, obrosłych biurokratycznymi naroślami. Czy można zracjonalizować działanie państwa? Jak w tym może pomóc informatyka?

e-Sąd z odsieczą sprawiedliwości

Polski wymiar sprawiedliwości postrzegany jest jako skostniały i opieszały. Tymczasem kolejne e-usługi udostępniane przez Ministerstwo Sprawiedliwości ułatwiają życie przedsiębiorcom i usprawniają pracę sądów.

e-Zdrowie w Polsce i na świecie

Projekty informatyzacji służby zdrowia realizowane są na świecie z różnym powodzeniem. Skąd Polska mogłaby czerpać wzorce? A może jesteśmy skazani na własne rozwiązania?

Raport Państwo 2.0, czyli nowa wizja informatyzacji państwa

Michał Boni, minister administracji i cyfryzacji, zaprezentował raport "Polska 2.0. Nowy start dla e-administracji". Przedstawia on informacje na temat stanu realizacji projektów będących w gestii nowo utworzonego ministerstwa oraz prezentuje kierunki dalszych działań związanych z informatyzacją i cyfryzacją administracji publicznej w naszym kraju.

Cyberprzestępcy podążają za użytkownikami

Już dwie na trzy polskie firmy odnotowały ataki lub awarie, które spowodowały spadek produkcji. Co trzecia firma utraciła dane. Liczba takich przypadków będzie rosła, bo hakerzy biorą na cel najbardziej masowe technologie. Szybko reagują też na zmiany w firmowej architekturze.

Jak zaplanować karierę w branży IT

Doświadczenia łączone na różnych stanowiskach w firmach o odmiennych profilach są szczególnie cenione przez pracodawców. Dlatego warto głęboko przeanalizować możliwości rozwoju kariery, które obecnie stwarza rynek IT.

Jakie są różnice między chmurą a wirtualizacją

Wirtualizacja jest obecnie standardową technologią, stosowaną powszechnie w IT. Od środowiska chmury prywatnej dzieli ją jednak długa droga, gdyż wymaga ona uzupełnienia o istotne składniki.

Rekomendacje



Serwisy IDG - Warunki obsługi - Kontakt - Redakcja - Regulamin - O nas - Polityka prywatności - Serwis zgodny z ASME
Reklama - Licencjonowanie treści - Prenumerata: Computerworld, Networld, PC World
Computerworld Polska i Computerworld Polska online są znakami towarowymi IDG Poland SA.
© Copyright 2012 International Data Group Poland S.A. 04-204 Warszawa ul. Jordanowska 12 tel.(+4822)321-78-00 fax(+4822)321-78-88