17. října 2006, 00.00 | První díl seriálu o Ruby on Rails – Úvod a instalace.
Úvod a instalace Ruby on Rails
Statické vs. dynamické stránky
V dávných dobách dřevního období Webu byla naprostá většina internetových stránek statická – autor prezentace musel ručně vytvořit každý html dokument, který měl být na stránkách k dispozici. Chtěl-li pak nějakou část stránek upravit nebo, nedej bože, snad provést nějakou globální úpravu třeba paty stránky, musel ručně upravovat velké množství souborů. Jelikož a protože je účelem počítačové techniky lidem život usnadňovat, zrodil se záhy koncept dynamických webových stránek. Jedním z prvních průkopníků tohoto nového odvětví se stal jazyk PHP, který se od svého vzniku v roce 1994 stal jednou z nejpopulárnějších vývojových platforem vůbec.
Tvorba stránek v PHP – a ostatně i většině jiných jazyků – většinou sestává z kompletní implementace veškeré funkcionality stránek pomocí nepřehledné sady zabudovaných a uživatelských funkcí; když se do projektu pustí zkušený programátor, dostane se možná i na pár glorifikovaných prefixů k funkcím, kterým se v rámci PHP milosrdně říká objekty. Takový přístup je samozřejmě řádově pohodlnější, než psaní myriád statických html dokumentů, ale rozhodně by mohlo být i líp. A proto se během let objevila celá řada nejrůznějších frameworků, knihoven, sad nástrojů, forem na bábovky a toolkitů, jejichž existence byla povětšinou motivována potřebou zjednodušit si práci a snížit pravděpodobnost lidské chyby, a to i za cenu ztráty výpočetního výkonu (kterého má dnes každý webový server přebytek). Za všechny můžeme jmenovat třeba ve své době slibný, v Pythonu napsaný server CherryPy.
Na scénu vstupuje Ruby on Rails
Asi nejznámějším z těchto nástrojů jsou právě Ruby on Rails (dále jen RoR) – soubor několika užitečných webových knihoven napsaných v moderním, interpretovaném jazyce Ruby. RoR jsou kompletně objektové prostředí, vystaveně na softwarové architektuře, známé pod názvem Model-View-Controller, často zkracovaným na prosté MVC. Tato architektura dělí funkcionalitu aplikace mezi objekty typu Model, které poskytují abstrakci k databázi; typu Controller, které přijímají uživatelské požadavky a podle nich vydávají příkazy modelům a poskytují výstup pro uživatele; a nakonec objekty typu View, které ovládají formu, kterou se výstup controlleru prezentuje uživateli. V případě RoR jsou controllery, modely a views implementovány moduly ActionController, respektive ActiveRecord a ActionView.
Pro ilustraci posuďte tento příklad:
Karel, uživatel aplikace Adresář, založené na architektuře MVC, chce ze svého programu dostat kontaktní informace svého kamaráda Pepy. Prostředky, které mu poskytuje uživatelské rozhraní (objekt typu View), tedy aplikaci zadá požadavek na vydání informací o Pepovi. Tento požadavek je aplikací předán odpovídajícímu objektu typu Controller, který jej analyzuje a následně si od třídy mající na starosti hledaná data vyžádá instanci třídy (tedy objekt) příslušného modelu, reprezentující požadovaný záznam v databázi; tento záznam potom předá příslušnému objektu View a ukončí se – uživatelské rozhraní už se postará o zformátování a zobrazení získané informace. Pro pochopení výhod tohoto přístupu je třeba si uvědomit, že model nepotřebuje znát nic, o způsobu, jakým jsou jím poskytované informace zobrazovány ani o vnitřní logice aplikace, stejně jako view nepotřebuje znát způsob, jakým jsou aplikací ukládána data (databáze, soubory…) – každý typ objektu se zkrátka stará o své, což umožňuje velmi čistý návrh aplikace a rozdělení úkolů mezi jednotlivé programátory, podle oblasti jejich odbornosti (návrh databáze, uživatelské rozhraní nebo aplikační logika).
Pro nedočkavce, konkrétní implementace v Ruby on Rails by vypadala nějak takhle:
class PeopleController < ApplicationController
def find
@person = Person.find_by_name(params[:id])
if(!@person)
flash[:notice] = "Záznam #{params[:id]} nenalezen."
end
end
end
Jak Rails nainstalovat?
Instalace RoR na Mac OS X, stejně jako provoz a vývoj pro toto prostředí jsou jednoduchou záležitostí. Přímočarý postup, který si dnes popíšeme, nás přivede do příkazové řádky, ale netřeba se bát – potřebujeme vykonat jen několik základních úkonů. Prvním krokem na naší cestě za funkčním Rails prostředím je instalace nástroje port, který nám poskytne snadný přístup k nejrůznějším užitečným open source programům. Nejdříve si stáhněte instalátor z této adresy. Instalace by měla proběhnout automaticky. Nyní už jen otevřete Terminal (v /Applications/Utilities) a postupně spusťte tyto příkazy:
Updatuje program port na nejnovější verzi:
sudo port selfupdate
Synchronizuje lokální seznam dostupných balíčků se seznamem na serveru:
sudo port sync
Nainstaluje aktuální verze databáze SQLite, interpreteru Ruby a systému rubygems:
sudo port install sqlite3 rb-sqlite3 ruby rb-rubygems
Nainstaluje Ruby on Rails samotné:
sudo gem install rails
Buďte trpěliví, během instalace se řada věcí kompiluje a, v závislosti na rychlosti vašeho stroje, může celý proces nějakou dobu trvat (většinou ne déle než 10 minut).
Nyní, když jsme nainstalovali vše potřebné, můžeme přistoupit k vytvoření prvního projektu na Rails. Vraťte se zpět do Terminálu a spusťe příkaz:
cd ~/Sites/
Následně:
rails muj_projekt
A na závěr
cd muj_projekt; scripts/server
Nyní máme běžící instanci vývojářského serveru WebBrick, sedící na lokální adrese http://0.0.0.0:3000/. Zkuste si tuto adresu otevřít ve svém prohlížeči – pokud se dosud vše dělo správně, měla by se objevit uvítací obrazovka RoR.
Běžící server můžete prozatím ukončit jednoduše zavřením terminálového okna. Příště si povíme o konfiguraci RoR aplikace a serveru, vysvětlíme si základy jazyka Ruby a vytvoříme první web na Rails.