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í :-)