Zpříjemněte si vývoj webových stránek s frameworkem Ruby on Rails (díl 1.)

Martin Pešout   7. 2. 2011


Když jsem před dvěma lety přemýšlel o tom, jak zefektivnit a zpříjemnit svojí programátorskou práci, tak jsem ještě netušil, že mě osud zavede k Ruby on Rails, frameworku postaveném na jazyce Ruby. Do té doby jsem používal několik let programovací jazyk PHP, který byl dostačující pro většinu projektů, se kterými se běžně setkávám. Většina lidí si řekne, co mě teda vedlo k této změně? Hlavním důvodem bylo především to, že práce s tímto nástrojem je snadnější a hlavně pro vývojáře mnohem příjemnější. V tomto článku bych rád přiblížil právě ty prvky, které nám tento nástroj přináší a čím může ulehčit programátorovi práci.

Programovací jazyk Ruby

Před samotným popisem Ruby on Rails je nutné zmínit alespoň pár slov k programovacímu jazyku Ruby, na kterém je tento webový framework postaven. Tvůrcem je Yukihiro Matsumoto, v internetovém světě známý pod přezdívkou Matz. Záměrem bylo spojit prvky z jeho oblíbených programovacích jazyku (Perl, Smalltalk, Eiffel, Ada a Lisp). Podařilo se mu zformovat nový jazyk, který vyvažuje funkcionální programování s imperativním. Matz přímo tvrdí ve svém článku, že se snažil utvořit Ruby přirozený, ne jednoduchý.


Ruby je jednoduchý navenek, ale velmi komplexní uvnitř, přesně jako naše lidské tělo.

—Yukihiro Matsumoto

Oblíbenost tohoto nástroje

Programovací jazyk Ruby spatřil poprvé světlo světa v roce 1995. Větší pozornosti se mu dostalo až v posledních letech, a to ve spojení s frameworkem Ruby on Rails. Index TIOBE1,
který měří nárůst programovacích jazyku, uvádí Ruby v lednu 2011 na desátém místě mezi všemi programovacími jazyky na světě. Množství popularity je přisuzováno počtu softwaru napsaného v Ruby. Ruby je k dispozici zcela zdarma. Volně ho lze užívat, kopírovat, upravovat a distribuovat.

tiobe

Vše, na co si vzpomenete, je objektem

Ruby je plně objektový programovací jazyk. To má za následek, že vše, co vývojář v kódu použije, je objektem. Muže si pak dovolit využít i takových konstrukcí, které ukazuje následující příklad.

2.times {print "Hello world "}
>> Hello world Hello world

Každý kousek kódu má svoje vlastnosti a akce. V objektově-orientovaném programování jsou vlastnosti nazývány instanční proměnné a akce jsou známy jako metody. Mnoho programovacích jazyku nemá čísla a další primitivní typy implementovány jako objekty. Zde tomu tak není a opravdu každý typ zde má svoje instanční proměnné a akce. Pro ukázku, například v jazyce Java je možné získat absolutní hodnotu nějakého čísla tak, že se zavolá oddělená funkce a následně se jí předá potřebná hodnota. Bude použito nejspíš něco takového:

number = Math.abs(-5) // Java kód

Jak již bylo zmíněno, čísla vystupují v roli objektu. Proto jazyk Ruby poskytuje možnost zjistit absolutní hodnotu pomocí vlastní metody daného čísla. Pro zjištění výsledku se jednoduše použije následující volání:

number = -5.abs # Ruby kód

Také třídy objektu vystupují v tomto jazyce jako objekty. Je možné proto s nimi dělat všechny běžné věci jako s ostatními objekty v Ruby. Vytvářet lze úplně nové třídy objektu, editovat stávající přidáním nebo odebráním metod. Lze dokonce naklonovat třídu, upravovat pak její kopii a originál tak zachovat.

Flexibilita

Programovací jazyk Ruby přichází s větší flexibilitou, protože dovoluje vývojářům volně měnit vlastní části jazyka. Základní metody tak mohou být zcela odebrány nebo znovu definovány. Programátor má v tomto směru naprosto volnou ruku. Vše si lze představit na následujícím jednoduchém příkladu. Sčítání je běžně reprezentováno pomocí operátoru plus (+). Ve vytvářeném programu bychom raději použili citelnější slovo plus. Jednoduše je tak možné přidat novou metodu do třídy Numeric. Dosáhne se toho, že pak u libovolného čísla v našem systému bude dovoleno využívat tuto novou metodu.

class Numeric
    def plus(x)
        self.+(x)
    end
end
y = 5.plus 6
# y je nyní rovno číslu 11

Další věcí, kterou se Ruby odlišuje od ostatních nástrojů, je způsob, jakým lze psát kód. Syntaxe pak ve výsledku připomíná spíše psanou větu než kód programovacího jazyka. Autoři tohoto nástroje si této vlastnosti velmi cení a i zkušenosti mnoha programátorů říkají, že jakmile si vývojář na tento styl psaní kódu zvykne, nebude chtít používat nic jiného. Docílí se tím poté i pěkné čitelnosti a úspory syntaxe. Jednoduchý příklad je vidět na následující ukázce.

body += additional_text unless additional_text.nil?

Pro nové vývojáře, kteří přešli k Ruby z některého imperativního programovacího jazyka jako je Visual Basic nebo PHP, je velice oblíbenou vlastností používání takzvaných bloků. Programátor je schopný pomocí bloku připojit na konec libovolné metody vlastní část zdrojového kódu, ve kterém popíše požadované chování. Psaní bloku je inspirováno především funkcionálními jazyky. Na následující ukázce je předvedeno použití bloku mezi konstrukcí doend. Metoda map pak aplikuje náš blok na uvedený seznam slov.

search_engines =
    %w[Google Yahoo MSN].map do |engine|
        "http://www." + engine.downcase + ".com"
    end

Zpestření zdrojového kódu

Při programování lze poměrně rychle zjistit, že Ruby rozumí spoustě konstrukcí. Závorky je možné používat ke zpřehlednění psaného kódu, avšak dá se obejít i bez nich. Stejně se tento jazyk staví i k používání středníku pro ukončení příkazu na řádku. Obě následující volání jsou proto ekvivalentní:

number = (2 + 1);
number = 2 + 1

Nové proměnné, které bude potřeba používat, není nutné předem deklarovat. Pro jejich označení je zde několik základních konvencí, kterými je vhodné se řídit.

  • var je označení pro lokální proměnnou
  • @var označuje instanční proměnnou
  • $var se používá pro globální proměnné

Dodržení těchto pravidel pak zvyšuje čitelnost kódu a dovoluje programátorům jednoduše označit role každé proměnné.

Co můžeme čekat v dalším díle?

V tomto článku jsem chtěl čtenářům poskytnout úvod k bližšímu vyprávění ohledně frameworku Ruby on Rails. Zaměřil jsem se především na popis jazyka Ruby, na kterém je samotný framework postavem. V dalším díle se budu zabývat samotným nástrojem Ruby on Rails a zmíním jeho význačné prvky.

Zdroje a odkazy na podrobnější informace