Ta kniha je dobra, ale __nekompletni__. Tzn. jazyk Ruby vas nenauci, pouze vam jej predstavi, i kdyz i to stoji za to ($20 za pdf-ko, napr. na apress.com).
Pro pochopeni Ruby je dobra spis 'The Ruby Way', a pak i 'The Ruby Cookbook'. Doporucuji zacit kapitolami o blocich a objektovem modelu, protoze to jsou koncepty, kterymi se Ruby od ostatnich bezne pouzivanych (ceckoidnich) jazyku nejvice lisi (objekty ala Smalltalk).
No a samozrejme, ze nelze nezminit klasiku 'Programming Ruby'. I kdyz i tato kniha je nekompletni a tak trochu chaoticka, ale zase jsou v ni vysvetleni, ktera jinde nenajdete (napr. jak funguji metaclasses).
Celkove lze rict, ze Ruby uz je dnes zdokumentovany pomerne dost slusne. A urcite stoji za pozornost, coz ovsem plati i o jinych 'modernich' jazycich (napr. Erlang).
Ruby je teď docela IN, takže kdo nemá problémy s angličtinou pro to sežene obrovské množství zdrojů. Klasika je asi Ruby on Rails od Pragmatic Programmers, které bych přirovnal třeba k PHP od Jirky Koska :-)
Rekl bych, ze fakt, ze je ted Ruby docela in urcite neni jen diky schopnosti vyvojaru Ruby on Rails (a pragmatic programmers) vyvolat patricny hype, ale hlavne a predevsim tim, ze Ruby je proste fakt dobre vymysleny/sestaveny jazyk. Proste plati, ze Rails je tak dobry, protoze... Ruby (viz jeho objektovy model a reflection/metaprogramming schopnosti).
Ano, anglicky psane dokumentace o Ruby/Ruby on Rails je fakt spousta. Agile Web Development with Rails vyslo uz dokonce ve druhem vydani.
Ach ano, já taky netvrdím, že jde o hype :-) Dávám teď dohromady třetí projekt v Rails, takže už jsem se dostal přes prvotní tápání a docela si práci užívám. Tedy užívám, není to takový porod jako PHP (no flame), navíc kombinace Rails + jQuery se ukazuje jako extrémně produktivní.
jasne, ja svoji poznamkou nechtel vyvolat flame (i kdyz o PHP bych si klidne zaflamoval, no problem).
Myslim si, ze nez se rovnou vrhnout na Rails, tak je lepsi se nejdrive (aspon trochu) obeznamit s Ruby. RoR se vsude prezentuje jako uplna brnkacka, ale dokazu si predstavit ten porod, kdyz je treba neco 'ohnout' a clovek nezna poradne Ruby (no flame, please). On totiz Ruby je prekvapive velice bohaty, general-purpose jazyk, ktery sam o sobe stoji za pozornost (a vedle RoR rostou i jine frameworky, viz treba Nitro. Ovsem je fakt, ze RoR je nejdal). Napriklad jeho objektova cast je pokrocilejsi nez treba v Jave (viz instancni promenne, singleton methods, 'class is object, object is class', mixins, atd, proste parada.).
Mohu-li se pozeptat, o jake projekty se jedna? Jak mate setaven 'web stack' (apache nebo lighttpd, mongrel, jaka databaze). Jak je to s rychlosti (pry je Rails pomaly), atd.?
To ano, je to porod, bohužel jsem už takový, do všeho po hlavě :-) A jinak mi vůbec nevadí, když mi lidi v diskuzích tykají ;-)
Projekty rád uvedu, jenom z pár důvodů nechci uvádět odkazy, snad se to snese:
- První je web pro cestovní kancelář, klasický první projekt v čemkoliv, kdy po dokončení je skvělá chvíle to zahodit a začít znova. Ale na svojí obranu musím říct, že to funguje velice dobře a cena byla dumpingová :-) Pouze jsem ani zdaleka nevyužil všechny možnosti, které Rails nabízí, protože jsem je neznal a byl jsem až moc zdegenerovaný PHP. Použito Apache a FastCGI, které se moc neosvědčilo, hlavně zbytečně složitá konfigurace.
- Druhý je menší portál, který se teď bude předělávat, ale z podnětu zákazníka, kde zkrátka původní návrh byl dost daleko k současným požadavkům. Opět Apache a FastCGI, ale bude se měnit.
- Třetí je naopak poměrně velká webová aplikace, zaměřená na poskytování specializovaného obsahu (omlouvám se za to mlžení). Bude prakticky celá v AJAXu, protože ten rozdíl je na pohodlí práce znát :-) Nepoužil jsem ale Prototype a Script.aculo.us z Rails, ale přidali jsme jQuery, které pro mě bylo podstatně srozumitelnější a hlavně obsahuje množství různých rozšíření. Rails navíc přidávají každému objektu metodu to_json, a díky téhle kombinaci je programování opravdu lahůdka, oproti PHP mizí asi 50% kódu. Součástí je i přenos dat z původních tří databází do jedné nové, na který jsou použité Rails migrace. Poběží to už na Mongrelu, ale ještě nevím, co bude sedět před ním... Doporučovaný mod_proxy_balancer je až v Apachi 2.2, takže další možnost je kombinace Apache + xxx + Mongrel, kde xxx by byl třeba Pound jako load balancer.
Databáze ve všech případech MySQL, ale díky ActiveRecord prakticky není potřeba na ní sáhnout a je jedno co všechno umí nebo neumí.
Jinak kdybych měl bleskově shrnout, co se mi na Rails líbilo/nelíbilo:
- Ruby je opravdu skvělý jazyk a má určitě dost velký podíl na úspěchy Rails.
- Super jsou pluginy, Rails komunita je aktivní a dost věcí už vytvořila.
- Stejně tak super jsou i gemy pro Ruby obecně :-)
- Díky přístupu "convention over configuration" odpadá množství otravného psaní
- Ruby i Rails vyznávají přístup nejmenšího překvapení a je to znát. Není potřeba moc hledat v dokumentaci, semtam jsem třeba potřeboval něco nového, představil si ideální postup jak to udělat a byl příjemně překvapený, že fungoval.
- Otrava je naopak absence podpory Unicode. V Rails 1.2 se to vylepšilo rozšířením třídy String o vlastnost chars, což je záchrana.
- Rychlost je klasicky "fast enough", jako všechno v Ruby. Díky propracovanému cachování se dá všechno dost urychlit, u webových aplikací je ostatně většinou největší brzdou databáze.
- Problémem může být, když někdo použije ActiveRecord způsobem, na který není stavěný, třeba získání tisíců řádků z databáze. Tam jde výkon dolů dost rychle, protože pro každý řádek se vytváří nový objekt.
- Každá instance Mongrelu nebo FastCGI zabírá dost paměti (v porovnání třeba s PHP). Navíc třeba FastCGI se spouští několik sekund, což může být neúnosný a je potom potřeba, aby běželo pořád.
Ok, už jsem se trochu moc rozpovídal, dlouhé romány většinou nikoho nebaví :-)
Keby bolo ruby IN tak by som naň našiel aspoň jedno kvalitné IDE s podporou intelli sense, jediné čo ma napadá je plugin pre Visual Studio: Ruby In Steel bohužiaľ ten je kommerčný(199 USD).
Na Ruby se mi paradne osvedcil Emacs se modem pro Ruby, ktery je propracovany fakt naprosto precizne. Urcite to neni reseni pro kazdeho, ale kdo preferuje editor pred IDE, pak tohle stoji za zvazeni :)
eclipse a pluginy do nej.
Nejpouzitelnejsi je dnes asi (nutno instalovat z nightly builds):
RDT
Jinak je v behu projekt Eclipse DLTK, ktery ma podporovat hned nekolik dynamickych jazyku najednou (zatim existuje podpora pro tcl, pro Ruby zatim nic moc).
RadRails presly pod kridla projektu aptana. Aptana bylo puvodne IDE pro web a ajax development pouze, tusim.
Kdo je zvykly spis na netbeans, tak i tam se podpora pro Ruby vyviji velice slibne (maj tam podobny projekt, jako ma eclipse DLTK, deadline maji oba projekty v zari tohoto roku, myslim). Typicka ukazka prospesnosti konkurence.
Proste to vypada, ze i velci hraci se konecne rozhodli podporovat dynamicke jazyky, coz je dobre.
Ruby a dokonce primo rails zu podporuji skoro vsehcny vyznamne IDE krizem krazem. Dokonce IDEcka, ktera slouzily do ted primarne pro Javu uz implementuji Rails.
(Idea, netbeans)