Czy przerzucam się z PHP na Ruby On Rails i dlaczego tak?

Twardy orzech do zgryzienia przed nami! Jeżeli nie znacie jeszcze Ruby on Rails a póki co siedzicie w PHP to zapnijcie pasy, bo będzie to niezła jazda (na torach oczywiście;-).Dla jasności, nie będę porównywał tutaj nudnych statystyk wydajności obu języków ani nic z tych geekowych wykresów. Nie! Tutaj czekają na Was prawdziwe M&Msy z orzeszkami jeżeli chodzi o web application developing ;-)
Od ostatnich kilku miesięcy namiętnie testuję Ruby On Rails. Nie będę już tłumaczył co to jest, pisałem wcześniej, a w sieci też nie brakuje materiałów. Podsumuję tylko jednym zdaniem:
“Ruby On Rails jest frameworkiem napisanym w języku Ruby. Jest czymś, czym jest np. Zend Framework dla PHP.”
Napiszę Wam dlaczego mimo wielkiej “miłości” do starego, dobrego PHP mam zamiar pomału przestawiać się na RoR.
W PHP programuję od sławnej trzeciej wersji, czyli rok ok. 2000-2001. Kawał czasu jakby nie patrzeć. Do tego czasu dorobiłem się własnego autorskiego frameworka (na wzorcu MVC), który jest ciągle rozwijany i sprawdza się w zastosowaniach komercyjnych.
Z Ruby On Rails zetknąłem się ponad pół roku temu, ale temat na poważnie traktuję od ok 3 miesięcy.
Przez te ostatnie miesiące bylem non stop wprowadzany w stan zdziwienia, co porządnie wykonany framework z dużym zapleczem w postaci społeczności może dla Ciebie zrobić. Walne prosto z grubej rur(b)y: Ruby On Rails jest genialny, nie wątpliwie jest to najlepszy framework jaki widziałem i miałem okazje testować ale być też najlepsze środowisko developerskie w jakim pracowałem!
Racja! Do rzeczy! Co jest takiego super? Zanim się wyleję to kliknij se…
Więcej już nie będzie, obiecuje.
Ok, jestem Macowcem (czyli siedzę na Macu ;-), zatem mam system Unixowy, zatem mam konsolę. Po zainstalowaniu RoR w systemie wystarczy wydać komendę:
rails tasteslikediggdotcom
i mamy już aplikacje na wzór digg.com. No… może nie nie zupełnie, ale nie wiele nas dzieli ;-)
Tak czy siak, mamy już kompletną wersje frameworka dla naszej aplikacji w katalogu tasteslikediggdotcom. Teraz fragment dla tych którzy kojarzą wzorzec MVC.
Chcesz utworzyć kontroler? Proszę…
ruby script/generate controller posts
Komenda, tworzy nowy plik kontrolera, klasę kontrolera, zestaw unit testów i szablony html używane przez kontroler.
Model? Nic prostszego
ruby script/generate model Post
Tworzy nowy model o nazwie Post, oraz wszystko co potrzebne. Ha, co mi się szczególnie spodobało to tak zwane “migracje”. Zostańcie ze mną tutaj.
Migracją pozwalają na tworzenie tabel w bazie danych oraz ich ewolucję w czasie rozwijania aplikacji bez używania SQLa! kiedy generujemy nowy model (co za tym idzie, chcemy nową tabele w bazie danych) tworzy się plik migracji w którym parę linijek kodu określa jaką tabela będzie miała strukturę. Możemy migracja cofać do dowolnej wersji, nie tylko tworzyć tabele ale też je modyfikować w osobnych plikach migracji. Normalne cud, miód i orzeszki! Jak zwykle do wszystkiego tylko jedna komenda:
rake db:migrate
Pokazałem wam najprostsze generatory, a powiem wam że są takie do generowania systemów autoryzacji, ajaxowy scaffolind (automatycznie generowane formularze do obsługi tabel w bazie danych), pluginy, a nawet całe systemy blogów.
A to były tylko generatory! ;-)
Dość o linii poleceń! Co tam jeszcze mamy za szmaczki? Aaaaa tak, soczyste Helpery dla HTML i AJAX.
W szablonie wystarczy wpisać:
< %= link_to_remote 'ajaxowe zapytanko!', :action: => 'letMeKnow' %>
I ciach! Mamy ajaxowe, w pełni asynchroniczne zapytanko do akcji ‘letMeKnow’ w kontrolerze w którym się znajdujemy! RoR używa do tego prototype.js i script.aculo.us. To najprostszy przykład, w RoR mamy dużo takich poziomek! Od edytowania treści w miejscu (click na pole i mamy okienko do edycji tego co klikneliśmy), po efekty morphingu z najnowszego moo.fx. I wszystko zapakowane w przyjemne helpery.
To tylko parę przykładowych rzeczy. Jest ich naprawdę mnoga więcej. Nie wspomnę o czystej i bardzo, bardzo “sympatycznej” składni języka Ruby. Tak dla przykładu. Napiszę fragment kodu, a wy mi powiecie co on robi.
10 times do |t|
print t
end
Albo coś ciekawszego np.:
user = User.find(:first) // znajdz w bazie danych, pierwszego użytkownika z tabeli users.
unless user.blank? // czy użytkownik jest pusty?
print user.name // jezeli nie jest to napisz jego imie.
end
Naprawdę przyjemnie się piszę.
Ale rzecz która mi przypadła do gustu najbardziej jest nie namacalna. Jest to swojego rodzaju “TO”. Użytkownicy Maców wiedzą co mam na myśli. Po prostu “It’s just works”. Wszystko jest proste i działa. Ma swojego rodzaju smakowitą otoczkę web 2.0 i tych wszystkich modnych haseł w programowaniu, “DRY”, “Convention over Configuration” and so on… Modnych, ale i jakże praktycznych!
Jak już wspomniałem wcześniej, do tego dochodzi nam spore zaplecze w postaci społeczności. W Polsce, mimo jeszcze słabej, ale pnącej się popularności RoR mamy znakomity portal rubyonrails.pl i bardzo aktywne forum.rubyonrails.pl. Polecam. W światowej WWW natomiast znajdziemy znakomite podcasty, videocasty, gotowe materiały w PDFie (ściągawki, czyli cheat sheets). Oficjalna strona RubyOnRails.com posiada znakomite WiKi i całą dokumentacji API, plus wiele linków do materiałów, od tutoriali po całe e-booki w PDFie.
Niestety, są i ciemne strony mocy (używam tutaj słowa “mocy” w pełni świadomie i dosłownie ;-). Dwa największe minusy to:
1) Mało firm hostinguje RoR w Polsce póki co, ale są już takie. Mój hostigowy faworyt, czyli progreso.pl wprowadza już wersję testową.
2) Co by nie było, musisz się jednak nauczyć nowego języka, jak mądry byś nie był to musisz na to poświęcić trochę czasu.
Ok, dość już o Ruby, trzeba to teraz jakoś odnieść do naszego PHP, w końcu takie jest założenie artykułu.
Czemu więc planuje się przesiąść z PHP na RoR? Oprócz tego co napisałem wyżej? Proste, RubyOnRails wydaje się być po prostu nowym dzieckiem aplikacji internetowych. Pachnie jak książka dopiero co kupiona w księgarni. Aplikacje napisane w RoR wyglądają naprawdę smakowicie i są na pewno krokiem do przodu (vide BASECAMP, Typo, 10 Tracks).
PHP wydaje się być już trochę skostniałe. Zaczynają z niego wychodzić błędy młodości. Różne nazewnictwo funkcji itd. Znane frameworki do PHP pomału umierają śmiercią naturalną (w wielu przypadkach ich autorzy po prostu przerzucają się na RoR. Dla przykładu można wziąć Zend Framework, o którym było tak głośno jakiś czas temu, miał zmienić wszystko. Osobiście uważam że jest ok, ale ustawienie go zajęło mi chyba z 4 godziny i nie powiem żeby mnie czymś powalił.
Ciężko to opisać słowami, ale porównajcie sobie choćby strony oficjalne PHP i Ruby. Widzicie teraz do czego zmierzam?
Konkluzje
Myślę że ostatnim zdaniem można z powodzeniem zamknąć ten wpis. Dodam małe wytłumaczenie: nie uważam że PHP jest gorszym językiem i ostrzegam że w kodzie Ruby powyżej mogą być błędy, pisałem z własnego, jeszcze całkiem małego zasobu wiedzy.
Zewnętrzne materiały:
* oficjalna strona języka Ruby od niedawna także po polsku!
* oficjalna strona frameworka RubyOnRails
* moje linki na del.icio.us odnośnie RoR ;-) – naprawdę sporo materiałów do linków z materiałami ;-)
* oficjalna strona języka PHP
* witryna Zend Framework
About this entry
You’re currently reading “Czy przerzucam się z PHP na Ruby On Rails i dlaczego tak?,” an entry on BartoszRychlicki.com
- Published:
- 03.16.07 / 11am
- Category:
- Ruby, inne technologie, php
15 Comments
Jump to comment form | comments rss [?] | trackback uri [?]