Skip to content

Instantly share code, notes, and snippets.

@josefrichter
Created September 20, 2010 16:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save josefrichter/588155 to your computer and use it in GitHub Desktop.
Save josefrichter/588155 to your computer and use it in GitHub Desktop.
Začínáme s Rails
Tento průvodce popisuje jak začít s Ruby on Rails. Po jeho přečtení byste měli chápat následující:
Instalace Rails, vytvoření nové Rails aplikace a propojení aplikace s databází
Obecná struktura Rails aplikace
Základní principy MVC (Model, View, Controller) a designu založeného na REST přístupu
Jak rychle vytvořit základní části Rails aplikace
Tento průvodce je popisuje Rails verze 3.0. Některé části kódu zde uvedené nebudou fungovat v předchozích verzích Rails
1 Předpoklady tohoto průvodce
Tento průvodce je navržen pro začátečníky, kteří chtějí začít s Rails aplikací od úplného začátku. Nepředpokládá že máte jakoukoliv předchozí zkušenost s Rails. Nicméně abyste z něj vytěžili co nejvíce, potřebujete mít nainstalovány některé náležitosti:
jazyk Ruby verze 1.8.7 nebo vyšší
Poznámka: Ruby 1.8.7 p248 a p249 obsahují chybu, která shazuje Rails 3.0. Ruby Enterprise Edition ale mají tuto chybu opravenu od verze 1.8.7-2010.02. Pokud jde o verzi 1.9, pak Ruby 1.9.1 není použitelné, protože okamžitě selhává při spojení s Rails 3.0, takže pokud chcete používat Rails 3 s verzí 1.9.x použijte 1.9.2 pro hladký průběh.
balíčkovací systém RubyGems
funkční instalaci databáze SQLite3
Rails je webový aplikační framework bežící na programovacím jazyku Ruby. Pokud nemáte žádnou předchozí zkušenost s Ruby, může pro Vás být náročnější ponořit se přímo do Rails. Na webu je několik dobrých bezplatných zdrojů k naučení základů jazyka Ruby, včetně následujících:
Mr. Neighborly’s Humble Little Ruby Book [anglicky]
Programming Ruby [anglicky]
Why’s (Poignant) Guide to Ruby [anglicky]
[zdroje doplněné překladatelem:]
http://www.root.cz/serialy/ruby-v-prikladech/ [česky]
http://interval.cz/programovani/ruby/ [česky]
2 Co jsou Rails
Rails jsou webový aplikační vývojový framework napsaný v jazyce Ruby. Je navržen tak, aby zjednodušil programování webových aplikací tím, že činí předpoklad o tom, co každý vývojář potřebuje aby začal. Umožňuje vám psát méně kódu a zároveň dosáhnout více než v mnoha jiných jazycích a frameworcích. Zkušení Rails vývojáři také říkají, že Rails dělají vývoj webových aplikací zábavnějším.
Rails jsou umíněný software. Činí předpoklady, že existuje "nejlepší" způsob dělání věcí a jsou navrženy aby takový způsob podporovaly - a v některých případech odrazovaly od alternativních způsobů. Pokud se naučíte "Rails přístup", pravděpodobně pocítíte výrazný nárúst produktivity. Pokud budete trvat na přenášení si starých zvyků z jiných jazyků a budete se pokoušet aplikovat postupy naučené jinde, váš zážitek může být poněkud méně veselý.
Filozofie Rails zahrnuje několik navádějících principů:
DRY - "Don't repeat yourself" = neopakujte se - naznačuje, že psát stejný kód stále dokola je špatně.
Konvence nad konfigurací - znamená, že Rails činí předpoklady o tom, co chcete udělat a jak to chcete udělat, místo aby vás nutily specifikovat každou jednu věc v nekonečných konfiguračních souborech.
REST je nejlepší vzorec pro webové aplikace - uspořádávat vaši aplikaci kolem zdrojů a standardních HTTP příkazů je nejrychlejší způsob.
2.1 Architektura MVC
V srdci Rails je ukotvena architektura Model, View, Controller, obvykle označována jen jako MVC. Výhody MVC jsou například:
- oddělení aplikační logiky od uživatelského rozhraní
- jednoduchost udržování kódu bez opakovaných součástí (DRY code)
- ujasnění kam různé části kódu patří, kvůli snadnější údržbě
2.1.1 Models (modely)
Model reprezentuje informace (data) aplikace and pravidla pro práci s nimi. V případě Rails jsou modely užívány zejména pro správu pravidel interakce s příslušnou databázovou tabulkou. Ve většině případů bude jedna tabulka v databázi odpovídat jednomu modelu vaší aplikace. Kus vaší aplikační logiky bude koncentrován v modelu.
2.1.2 Views (pohledy)
Views reprezentují uživatelské rozhraní vaší aplikace. V rails jsou views obvykle HTML soubory s vloženým Ruby kódem, který provádí úkony související čistě s přezentací dat. Views mají na starosti poskytovat data webovému prohlížeči nebo jinému nástroji použitému k zasílání požadavků vaší aplikaci.
2.1.3 Controllers (řadiče)
Controllery tvoří "lepidlo" mezi modely a views. V Rails jsou controllery zodpovědná za zpracování příchozích požadavků z webového prohlížeče, získávání dat z modelů a odesílání těchto dat do views k jejich zobrazení.
2.2 Součásti Rails
Rails jsou poskládány z mnoha jednotlivých komponent.
Action Pack
Action Controller
Action Dispatch
Action View
Action Mailer
Active Model
Active Record
Active Resource
Active Support
Railties
2.2.1 Action Pack
Action Pack je jediný gem, který obsahuje Action Controller, Action Dispatch a Action View. Je to VC část MVC.
2.2.2 Action Controller
Action Controller je komponenta, která má na starosti controllery v Rials aplikaci. Action Controller framework zpracovává příchozí požadavky v Rails aplikaci, vytahuje z nich parametry a rozesílá je příslučným akcím. Služby poskytované Action Controllerem zahrnují správu relací (sessions), vykreslování šablon a správu přesměrování.
2.2.3 Action View
Action View má na startosti views vaší Rails aplikace. Umí v základu vytvořit výstup jak v HTML tak v XML. Action View řídí vykreslování šablon, včetně vnořených a parciálních šablon, a obsahuje zabudovanou podporu AJAXu.
2.2.4 Action Dispatch
Action Dispatch zpracovává směrování příchozích požadavků a rozesílá je tam kam chcete, buďto do vaší aplikace anebo do jakékoliv jiné Rack aplikace.
2.2.5 Action Mailer
Action Mailer je framework pro tvorbu e-mailových služeb. Action Mailer můžete použít pro příjem a zpracování příchozích e-mailů a odesílání jednoduchých čistě textových anebo složitých multipart emailů na základě flexibilních šablon.
2.2.6 Active Model
Active Model poskytuje definované rozhraní mezi službami gemu Action Pack a ORM gemy (Object Relational Mapping - objektově relační mapování) jako například Active Record. Active Model umožňuje Rails využívat jiné ORM frameworky místo Active Recordu, pokud to vaše aplikace potřebuje.
2.2.7 Active Record
Active Record je základem pro modely v Rails aplikaci. Umožňuje mimo jiné nezávislost na databázi, základní CRUD (create,read,update,delete - vytvořit, načíst, upravit, smazat) funkcionalitu, pokročilé vyhledávací schopnosti, a schopnost specifikovat vztahy (relace) mezi modely.
2.2.8 Active Resource
Active Resource poskytuje rámec pro správu spojení mezi aplikační logikou a REST službami. Implementuje způsob mapování webových zdrojů na lokální objekty s CRUD sémantikou.
2.2.9 Active Support
Active Support je rozsáhlá kolekce podpůrných funkcí a rozšíření základní knihovny Ruby, které jsou využívány v Rails jak interním kódem tak vašimi aplikacemi.
2.2.10 Railties
Railties jsou srdcem Rails kódu, který vytváří novou Rails aplikaci a propojuje jednotlivé frameworky a pluginy v rámci Rails aplikací.
2.3 REST
REST je zkratka pro Representational State Transfer a je základem REST architektury. Ta je obecně považována za disertační práci Roye Fieldinga "Architektonické styly a navrhování architektury síťového software" [anglicky]. Sice si můžete pročíst celou práci, ale v Rails se REST koncentruje do dvou hlavních principů:
Používání identifikátorů zdrojů, jako například URL, pro reprezentaci zdrojů
Přenášení reprezentace stavu těchto zdrojů mezi systémovými komponentami.
Například v Rails aplikaci bude požadavek typu
DELETE /photos/17
chápán jako odkazující na zdroj-fotografii s ID=17 a indikující požadovanou akci - smazání zdroje-fotografie. REST je přirozeným stylem architektury webových aplikací a Rails se jím řídí aby vás odstínily od mnohých komplexních problémů souvisejících s REST a podivností prohlížečů.
Pokud by vás zajímalo více podrobností o REST jako architektonickém stylu, následující zdroje jsou snadněji stravitelné než Fieldingova disertace:
A Brief Introduction to REST by Stefan Tilkov
An Introduction to REST (video tutorial) by Joe Gregorio
Representational State Transfer article in Wikipedia
How to GET a Cup of Coffee by Jim Webber, Savas Parastatidis & Ian Robinson
[něco v češtině?]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment