Kurz Ruby on Rails
co je Ruby?
Rubรญn je vysokoรบrovลovรฝ, interpretovanรฝ a objektovฤ orientovanรฝ programovacรญ jazyk. Je to dynamickรฝ open-source jazyk, za kterรฝm stojรญ skvฤlรก komunita. Ruby byl navrลพen pro jednoduchost a produktivitu. Podporuje psanรญ lidskรฉho prvnรญho a poฤรญtaฤovรฉho druhรฉho softwarovรฉho kรณdu. Vytvoลil ji Yukihiro Matsumoto v Japonsku v roce 1995.
Co je Rails?
Rails je vรฝvojovรฝ rรกmec napsanรฝ v Ruby pro vytvรกลenรญ webovรฝch aplikacรญ. Byl vytvoลen jako zรกklad aplikace Basecamp a potรฉ vydรกn jako open-source software v roce 2004. Rails nabรญzรญ mnoho vestavฤnรฝch standardnรญch funkcรญ a funkcรญ, coลพ z nฤj ฤinรญ vhodnou volbu pro prototypovรกnรญ a vรฝvoj MVP.
Vytvoลil ho David Heinemeier Hasson, znรกmรฝ jako DHH. Je to jeden z nejvlivnฤjลกรญch a nejoblรญbenฤjลกรญch nรกstrojลฏ pro tvorbu webovรฝch aplikacรญ. Pouลพรญvajรญ jej nฤkterรฉ oblรญbenรฉ weby, jako je Airbnb, Github, Shopify atd.
Proฤ Rails?
Zde jsou vรฝhody/vรฝhody pouลพรญvรกnรญ Rails:
- Rails je zabalen jako drahokam Ruby a mลฏลพete jej pouลพรญt k vytvoลenรญ rลฏznรฝch aplikacรญ.
- Umoลพลuje vรกm vytvรกลet bฤลพnรฉ webovรฉ aplikace, e-commerce aplikace, redakฤnรญ systรฉm a dalลกรญ.
- Rails je full-stack framework, kterรฝ zahrnuje vลกe, co potลebujete k vytvoลenรญ databรกzovฤ ลรญzenรฉ webovรฉ aplikace pomocรญ vzoru Model-View-Controller.
- To znamenรก, ลพe vลกechny vrstvy jsou vytvoลeny tak, aby hladce spolupracovaly s menลกรญm mnoลพstvรญm kรณdu. Vyลพaduje mรฉnฤ ลรกdkลฏ kรณdu neลพ jinรฉ frameworky.
Jak stรกhnout a nainstalovat Ruby na Windows
Proces instalace bude zรกviset na vaลกem operaฤnรญm systรฉmu. Projdete instalacรญ Ruby na Windows, Mac a Linux.
Krok 1) Stรกhnฤte si Rubyinstaller
Nejjednoduลกลกรญ zpลฏsob, jak nainstalovat Ruby na vรกลก Windows poฤรญtaฤ je pลes Ruby Installer, kterรฝ si mลฏลพete stรกhnout na https://rubyinstaller.org/.
Jedinรฉ, co musรญte udฤlat, je spustit staลพenรฝ instalรกtor.
Krok 2) Kliknฤte na staลพenรฝ instalaฤnรญ program
Double-kliknฤte na staลพenรฝ instalaฤnรญ program 'rubyinstaller-2.4.1-2-x64.exe'.
Krok 3) Pลijmฤte licenci
Vyberte pลepรญnaฤ โSouhlasรญm s licencรญโ a kliknฤte na tlaฤรญtko โDalลกรญโ. To by vรกs mฤlo pลivรฉst k nรกsledujรญcรญmu obrรกzku nรญลพe:
Krok 4) Zaลกkrtnฤte prvnรญ dvฤ zaลกkrtรกvacรญ polรญฤka
Zaลกkrtnutรญm prvnรญch dvou polรญฤek usnadnรญte spouลกtฤnรญ skriptลฏ Ruby.
Kliknutรญm na tlaฤรญtko 'Instalovat' spusลฅte instalaci. Po dokonฤenรญ instalace byste mฤli vidฤt obrรกzek nรญลพe.
Krok 5) Kliknฤte na Dokonฤit
Nezruลกujte zaลกkrtnutรญ moลพnosti, kterรก nainstaluje MSYS2. Klepnutรญm na โDokonฤitโ dokonฤete instalaci a zobrazรญ se okno pลรญkazovรฉho ลรกdku zobrazenรฉ na obrรกzku nรญลพe.
Krok 6) Nainstaluje MSYS2
Tento krok nainstaluje MSYS2, stavebnรญ platformu, kterรก obsahuje sprรกvce balรญฤkลฏ pro snadnou instalaci balรญฤkลฏ Windows.
Stisknutรญm klรกvesy Enter nainstalujete vลกechny komponenty, protoลพe vลกechny jsou nutnรฉ pro bezproblรฉmovรฉ vรฝvojovรฉ prostลedรญ Ruby on Rails, se kterรฝm lze pracovat. Windows.
Instalace kolejnic
Mฤli byste mรญt nainstalovanรฝ Ruby z pลedchozรญ ฤรกsti a nynรญ se chystรกte nainstalovat Rails. Rails mลฏลพete nainstalovat pomocรญ balรญฤku z RailsInstaller, ale problรฉm s tรญm je, ลพe nezรญskรกte nejnovฤjลกรญ verzi poลพadovanรฝch balรญฤkลฏ.
Pokud jiลพ mรกte nainstalovanรฝ nejnovฤjลกรญ Ruby a zรกkladnรญ sadu poลพadovanรฝch RubyGems a rozลกรญลenรญ. Vลกe, co nynรญ musรญte udฤlat, je spustit na pลรญkazovรฉm ลรกdku nรกsledujรญcรญ pลรญkaz, abyste zรญskali Rails do vaลกeho systรฉmu: 'gem install rails.'
Budete takรฉ muset nainstalovat Node.js pokud jej jeลกtฤ nemรกte, protoลพe nฤkterรฉ knihovny, na kterรฝch Rails zรกvisรญ, vyลพadujรญ a Javascript runtime, aby fungoval sprรกvnฤ. Mลฏลพete zรญskat uzel na https://nodejs.org.
Je to bฤลพnฤjลกรญ a preferovanรฝ pลรญstup k rozvoji Windows. Komunita ลพeleznic pouลพรญvรก a Windows Subsystรฉm pro Linux, kterรฝ poskytuje prostลedรญ GNU/Linux s nรกstroji pลรญkazovรฉho ลรกdku, utilitami a bฤลพnรฝmi aplikacemi pลรญmo na Windows.
Instalace Ruby na Mac
Vรกลก Mac jiลพ mรก Ruby pลedinstalovanou. Pลedinstalovanรก verze vลกak mลฏลพe bรฝt starรก, a proto budete muset nainstalovat novou/nejnovฤjลกรญ verzi.
Nejjednoduลกลกรญ zpลฏsob, jak toho dosรกhnout, je pomocรญ sprรกvce balรญฤkลฏ, jako je napล Homebrew. Moลพnรก budete muset nejprve nainstalovat Homebrew spuลกtฤnรญm pลรญkazu nรญลพe v Terminรกlu.
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)
Zobrazรญ se varovรกnรญ a poลพรกdรก vรกs o zadรกnรญ hesla. Zadejte heslo pro Mac (pลi psanรญ neuvidรญte znaky). Po zadรกnรญ hesla staฤรญ stisknout 'Enter'. Potรฉ spusลฅte tento jednoduchรฝ pลรญkaz Homebrew a nainstalujte Ruby na vรกลก Mac.
brew install ruby
A takรฉ spusลฅte tento pลรญkaz:
echo "export PATH="/usr/local/bin:/usr/local/sbin:$PATH >> ~/.bash_profile
Chcete-li nastavit tuto instalaci Ruby jako vรฝchozรญ Ruby ke spuลกtฤnรญ ve vaลกem systรฉmu a nikoli pลedinstalovanรฝ Ruby.
Chcete-li potvrdit, ลพe instalace byla รบspฤลกnรก, mลฏลพete v Terminรกlu spustit nรกsledujรญcรญ
ruby --version
tรญm se vytiskne ฤรญslo verze Ruby, kterou jste nainstalovali. Vรฝstup bude vypadat nฤjak takto
ruby 2.6.0p0 (2018-12-25 revision 66547) [x86_64-darwin18]
Instalace Ruby na Ubuntu (Linux)
Nejjednoduลกลกรญ zpลฏsob, jak nainstalovat Ruby na vรกลก Ubuntu systรฉm je pลes sprรกvce balรญฤkลฏ apt. Chcete-li nainstalovat nejnovฤjลกรญ Ruby, musรญte v Terminรกlu spustit nรกsledujรญcรญ pลรญkazy Ubuntu รบloลพiลกtฤ.
- aktualizace sudo apt โ Tรญm se aktualizuje vรฝchozรญ nastavenรญ Ubuntu รบloลพiลกลฅ
- sudo apt install ruby-full โ Stรกhne a nainstaluje nejnovฤjลกรญ Ruby
Chcete-li potvrdit, ลพe instalace byla รบspฤลกnรก, mลฏลพete spustit nรกsledujรญcรญ 'rubรญnovรก verze,' tรญm se vytiskne verze Ruby, kterou jste nainstalovali.
Instalace kolejnic na Ubuntu (Linux)
Pro รบspฤลกnou instalaci Rails na vรกลก poฤรญtaฤ se systรฉmem Linux byste mฤli postupovat podle nรญลพe uvedenรฝch krokลฏ.
Krok 1) Spuลกtฤnรญm aktualizujte sprรกvce drahokamลฏ v poฤรญtaฤi 'gem update โsystem' na terminรกlu nebo pลรญkazovรฉm ลรกdku.
Krok 2) Bฤh 'gem install rails' k instalaci nejnovฤjลกรญ verze Rails do vaลกeho poฤรญtaฤe.
Krok 3) Mฤli byste nainstalovat drahokam bundler pro snadnou sprรกvu zรกvislostรญ drahokamลฏ aplikacรญ Rails. Bฤh 'gem install bundler' aby si to.
Dva principy Rails
Rails se ลรญdรญ zรกkladnรญmi principy nรกvrhu softwaru a povzbuzujรญ vรกs, abyste je takรฉ pouลพรญvali.
Dva nejbฤลพnฤjลกรญ jsou:
- Don't Repeat Yourself (DRY) โ dรญky tomu budete psรกt struฤnรฝ, konzistentnรญ a udrลพovatelnรฝ kรณd.
- Konvence nad konfiguracรญ โ Rails je pลedkonfigurovรกn tak, aby pouลพรญval rozumnรฉ vรฝchozรญ hodnoty, kterรฉ vyhovujรญ vฤtลกinฤ bฤลพnรฉho pouลพitรญ. Dรญky tomu je vรฝvoj vaลกรญ aplikace rychlรฝ a mรกte takรฉ mรฉnฤ kรณdu na รบdrลพbu.
Rails โ Struktura souborลฏ projektu
S Rails nynรญ nainstalovanรฝm ve vaลกem systรฉmu umoลพลuje vytvoลit aplikaci Rails! V tomto tutoriรกlu Ruby on Rails se nauฤรญme pลรญklady Ruby on Rails a jak vytvoลit aplikaci seznamu รบkolลฏ. Spusลฅte nรกsledujรญcรญ pลรญkaz 'rails new todo_app' ve vaลกem terminรกlu k vytvoลenรญ aplikace.
Tento pลรญkaz vytvoลรญ adresรกล s nรกzvem 'todo_app' v aktuรกlnรญm adresรกลi se zรกkladnรญ strukturou sloลพek webovรฉ aplikace Rails, jak je znรกzornฤno na obrรกzku nรญลพe:
V tomto pลรญkladu Ruby on Rails si projdete hlavnรญ adresรกลe.
aplikace โ Tento adresรกล seskupuje pomocรญ rลฏznรฝch podadresรกลลฏ pro uลพivatelskรฉ rozhranรญ/rozvrลพenรญ (zobrazenรญ a pomocnรญci), ลadiฤ (soubory ลadiฤลฏ) a modely (obchodnรญ/aplikaฤnรญ logika).
aplikace/ovladaฤe โ V tomto adresรกลi jsou uloลพeny soubory ลadiฤe pouลพรญvanรฉ Rails ke zpracovรกnรญ poลพadavkลฏ od klienta.
aplikace/aktiva โ Obsahuje statickรฉ soubory, coลพ je potลeba pro front-end aplikace seskupenรฝ do sloลพek podle jejich typu โ JavaScรฉnรกล soubory, obrรกzky a ลกablony stylลฏ.
aplikace/pomocnรญci โ Tento podadresรกล obsahuje pomocnรฉ funkce, dรญky nimลพ je vรกลก aplikaฤnรญ model, pohled a logika ลadiฤe zamฤลena, je malรก a pลehlednรก.
aplikace/modely โ Toto obsahuje soubory
kterรฉ modelujรญ databรกzi vaลกรญ aplikace. Modelovรฉ tลรญdy velmi usnadลujรญ prรกci s databรกzรญ.
aplikace/zobrazenรญ โ Tyto soubory ลกablony/rozvrลพenรญ blokovรกnรญ, se kterรฝmi uลพivatel vaลกรญ aplikace komunikuje. ล ablony jsou kombinacรญ HTML a dat z databรกze.
popelnice โ Obsahuje skripty Rails, kterรฉ spouลกtรญ vaลกi aplikaci. Mลฏลพe takรฉ obsahovat dalลกรญ skripty, kterรฉ pouลพรญvรกte k nastavenรญ a upgradu aplikace.
Konfigurace โ Toto obsahuje konfiguraฤnรญ soubory โ databรกze.yml, prostลedรญ.rb, trasy.rbatd., kterรฉ vaลกe aplikace potลebuje ke spuลกtฤnรญ.
DB โ Tento adresรกล obsahuje soubory/skripty, kterรฉ se pouลพรญvajรญ ke sprรกvฤ vaลกรญ aplikaฤnรญ databรกze.
lib โ Tento adresรกล obsahuje rozลกรญลenรฝ modul pro vaลกi aplikaci.
log โ Toto obsahuje soubory protokolu โ server.log, development.log, test.log a production.logatd., kterรฉ se pouลพรญvajรญ k ladฤnรญ nebo sledovรกnรญ vaลกรญ aplikace.
veลejnost โ Tento adresรกล obsahuje statickรฉ soubory a zkompilovanรฉ poloลพky, jako jsou soubory HTML, Javascript soubory, obrรกzky a ลกablony stylลฏ.
test - Tento adresรกล obsahuje testovacรญ soubory, kterรฉ zapisujete za รบฤelem testovรกnรญ funkฤnosti aplikace.
tmp โ Tento adresรกล obsahuje doฤasnรฉ soubory, jako jsou soubory cache a pid.
prodejce โ Tento adresรกล obsahuje knihovny tลetรญch stran.
Gemfile โ Tento soubor urฤuje, jakรฉ jsou vaลกe zรกkladnรญ poลพadavky na drahokam pro spuลกtฤnรญ vaลกรญ webovรฉ aplikace. Drahokamy mลฏลพete seskupit do vรฝvojovรฝch, testovacรญch nebo produkฤnรญch a Rails bude vฤdฤt, kdy zaลadit kaลพdรฝ drahokam.
Gemfile.lock โ Na rozdรญl od Gemfile, kterรฝ explicitnฤ uvรกdรญ drahokamy, kterรฉ chcete ve svรฉ aplikaci, Gemfile.lock navรญc obsahuje dalลกรญ drahokamy, na kterรฝch zรกvisรญ ty, kterรฉ uvedete v Gemfile a kterรฉ se pak automaticky nainstalujรญ, aby byly uspokojeny zรกvislosti.
Readme.md โ Tento soubor slouลพรญ ke sdรญlenรญ zรกkladnรญch podrobnostรญ o vaลกรญ aplikaci, jako je to, co aplikace dฤlรก, jak postupovat pลi instalaci a spuลกtฤnรญ aplikace.
Rakefile โ Tento soubor obsahuje rลฏznรฉ definice รบloh rake, coลพ pomรกhรก pลi automatizaci kaลพdodennรญch รบloh sprรกvy vaลกรญ aplikace.
config.ru โ Toto je konfiguraฤnรญ soubor Rack, kterรฝ poskytuje rozhranรญ pro webovรฝ server pro spuลกtฤnรญ vaลกรญ aplikace.
Zmฤลte adresรกล na 'todo_app' adresรกล Rails vygenerovรกny a spuลกtฤny 'rails server' ke spuลกtฤnรญ aplikace. Typ localhost: 3000 v adresnรญm ลรกdku vaลกeho webovรฉho prohlรญลพeฤe byste mฤli vidฤt obrรกzek nรญลพe, pokud vลกe probฤhlo v poลรกdku.
Toto je vรฝchozรญ domovskรก strรกnka vaลกรญ aplikace a zmฤnรญte to v pozdฤjลกรญ ฤรกsti tohoto kurzu Ruby on Rails. Server mลฏลพete zastavit stisknutรญm 'Ctrl-C'.
Rails โ Generovรกnรญ pลรญkazลฏ
Pลรญkaz Rails generation vyuลพรญvรก ลกablony k vytvoลenรญ spousty uลพiteฤnรฝch vฤcรญ ve vaลกรญ aplikaci. Pomocรญ tฤchto generรกtorลฏ mลฏลพete uลกetลit spoustu ฤasu.
Pomรกhรก napsรกnรญm standardnรญho kรณdu, kรณdu, kterรฝ je nezbytnรฝ pro fungovรกnรญ vaลกรญ webovรฉ aplikace. Mลฏลพete bฤลพet 'kolejnice generujรญ' samostatnฤ na pลรญkazovรฉm ลรกdku nebo terminรกlu, abyste vidฤli seznam dostupnรฝch generรกtorลฏ, jak je uvedeno nรญลพe:
Mลฏลพete takรฉ bฤhat โkolejnice generujรญ โpลรญkazโโ abyste vidฤli popis toho, co pลรญkaz dฤlรก. Nabรญzรญ pohodlnรฉ moลพnosti, kterรฉ lze spustit pomocรญ pลรญkazu a pลรญkladu pouลพitรญ. Obrรกzek nรญลพe ukazuje vรฝstup bฤhu'kolejnice generujรญ ovladaฤ':
Pลรญkaz rails generation scaffold pouลพijete k automatickรฉmu vytvoลenรญ modelu, pohledu a ovladaฤe pro aplikaci seznamu รบkolลฏ, kterou vytvรกลรญte. Bฤh' rails generation leลกenรญ todo_list title:string description: text' ve vaลกem terminรกlu (zkontrolujte, ลพe jste stรกle v adresรกลi todo_app).
Tรญm se vytvoลรญ รบplnรฉ webovรฉ rozhranรญ CRUD (Create, read, update, and delete) pro tabulku TodoLists.
Dalลกรญm uลพiteฤnรฝm pลรญkazem je znรกt 'kolejnice zniฤit' obrรกtรญ cokoliv โkolejnice generujรญโฆโ ano.
Kolejnice โ vedenรญ
Smฤrovacรญ systรฉm Rails, Rails router, zpracovรกvรก vลกechny pลรญchozรญ poลพadavky do vaลกรญ webovรฉ aplikace. Dฤlรก to tak, ลพe prozkoumรก adresu URL pลรญchozรญch poลพadavkลฏ a potรฉ mapuje kaลพdรฝ poลพadavek na akci ovladaฤe, kterรก je zodpovฤdnรก za jeho zpracovรกnรญ, pomocรญ speciรกlnรญ syntaxe specifikovanรฉ v souboru tras (config/routes.rb).
Soubor tras pomรกhรก pลi ovlรกdรกnรญ kaลพdรฉho aspektu adresy URL vaลกรญ webovรฉ aplikace. Rails standardnฤ pouลพรญvajรญ RESTful design zaloลพenรฝ na architektonickรฉm stylu REST, kterรฝ poskytuje mapovรกnรญ mezi HTTP slovesy a poลพadavky (URL) na akce ovladaฤe.
Soubor tras byl vygenerovรกn pลi spuลกtฤnรญ 'kolejnice novรฉ' v dลรญvฤjลกรญ ฤรกsti tohoto tutoriรกlu. Pokraฤujte v aplikaci Todo, kterou vytvรกลรญte, a spusลฅte nรกsledujรญcรญ' rails db:migrate' (brzy se dozvรญte, co to dฤlรก)
V pลรญkazovรฉm ลรกdku se ujistฤte, ลพe jste stรกle v koลenovรฉm adresรกลi aplikace (adresรกล todo_app).
Potรฉ spusลฅte server znovu pomocรญ 'rails server'. Typ http://localhost:3000/todo_lists/ v prohlรญลพeฤi a stisknฤte Enter. Mฤli byste zรญskat zpฤt webovou strรกnku, jak je znรกzornฤno na nรญลพe uvedenรฉm obrรกzku pลรญkladu Ruby on Rails:
Toto je zobrazenรญ seznamลฏ รบkolลฏ, kterรฉ vygeneroval pลรญkaz scaffold a je ลรญzeno akcรญ indexu TodoListsController.
Pokraฤujte a pลidejte seznam รบkolลฏ kliknutรญm na โNovรฝ seznam รบkolลฏโ na strรกnce, mฤli byste zรญskat strรกnku, jak je znรกzornฤno nรญลพe:
Vลกimnฤte si, ลพe adresa URL se zmฤnila na http://localhost:3000/todo_lists/new. Toto je strรกnka pro vytvoลenรญ novรฉho seznamu รบkolลฏ a je ลรญzena novou metodou/akcรญ TodoListsController.
Zadejte nรกzev a popis seznamu รบkolลฏ do formulรกลe a kliknฤte na tlaฤรญtko Vytvoลit seznam รบkolลฏ, adresa URL by se mฤla zmฤnit na http://localhost:3000/todo_lists/1, zobrazenรฝ na nรญลพe uvedenรฉm obrรกzku pลรญkladu kรณdu Ruby on Rails:
Toto je strรกnka zobrazenรญ seznamu รบkolลฏ a je ลรญzena metodou/akcรญ show TodoListsController. Pokud se vrรกtรญte k http://localhost:3000/todo_lists/, nynรญ byste mฤli vidฤt obrรกzek nรญลพe s pลidanรฝm novรฝm seznamem รบkolลฏ:
Rails dokรกzal namapovat rลฏznรฉ poลพadavky (URL) na odpovรญdajรญcรญ akci TodoListsController pomocรญ definice trasy v config/routes.rb.
Pokud se podรญvรกte na tento soubor, uvidรญte jeden ลรกdek 'resources: todo_lists', je Rails vรฝchozรญ zpลฏsob psanรญ klidnรฝch tras. Tento jedinรฝ ลรกdek vytvรกลรญ sedm tras vลกech mapovรกnรญ do ovladaฤe TodoLists.
Podle konvence se akce kaลพdรฉho ลadiฤe takรฉ mapuje na konkrรฉtnรญ operaci CRUD (Vytvoลenรญ, ฤtenรญ, aktualizace a smazรกnรญ) v databรกzi.
Mลฏลพete bฤลพet 'rake routes' na pลรญkazovรฉm ลรกdku, abyste vidฤli rลฏznรฉ trasy dostupnรฉ ve vaลกรญ aplikaci. Obrรกzek nรญลพe ukazuje vรฝstup bฤhu 'ลพelezniฤnรญ trasy' ve vaลกem pลรญkazovรฉm ลรกdku/terminรกlu.
Kolejnice โ pohledy
Vrstva View je jednou ze souฤรกstรญ paradigmatu MVC a je zodpovฤdnรก za generovรกnรญ HTML odpovฤdi pro kaลพdรฝ poลพadavek na vaลกi aplikaci. Rails standardnฤ pouลพรญvajรญ ERB (Embedded Ruby), coลพ je vรฝkonnรฝ ลกablonovacรญ systรฉm pro Ruby.
Dรญky ERB je psanรญ ลกablon snadnรฉ a udrลพovatelnรฉ tรญm, ลพe kombinuje prostรฝ text s kรณdem Ruby pro variabilnรญ nahrazovรกnรญ a ลรญzenรญ toku. ล ablona ERB mรก pลรญponu .html, .erb nebo .erb.
Vฤtลกinou budete pouลพรญvat pouze kombinaci dvou znaฤek znaฤek, z nichลพ kaลพdรก zpลฏsobรญ, ลพe se vloลพenรฝ kรณd zpracuje a naloลพรญ se s nรญm urฤitรฝm zpลฏsobem.
ล tรญtek s rovnรญtkem '<%= %>' oznaฤuje, ลพe vloลพenรฝ kรณd je vรฝraz a ลพe vรฝsledek kรณdu by mฤl bรฝt nahrazen vykreslovacรญm modulem pลi vykreslovรกnรญ ลกablony.
Druhรก znaฤka bez znamรฉnka rovnรก se '<% %>' indikuje vykreslovaฤi, ลพe vรฝsledek kรณdu by nemฤl bรฝt nahrazen/vytiลกtฤn pลi vykreslovรกnรญ ลกablony.
Kaลพdรฝ ovladaฤ ve vaลกรญ aplikaci Rails mรก odpovรญdajรญcรญ podadresรกล aplikace/zobrazenรญa kaลพdรก akce/metoda v ovladaฤi mรก v tomto adresรกลi odpovรญdajรญcรญ soubor .html a .erb.
Podรญvejte se na aplikaci/zobrazenรญ aplikace todo, kterou vytvรกลรญte. Najdete podadresรกล s nรกzvem 'todo_lists' uvnitล tohoto podadresรกลe .html.erb soubory s nรกzvy odpovรญdajรญcรญmi akcรญm/metodรกm v TodoLists regulรกtor.
Rails โ ActiveRecord, Active Record Pattern a ORM
ActiveRecord je Ruby implementace vzoru Active Record, coลพ je jednoduchรฝ vzor, โโkde tลรญda pลedstavuje tabulku a instance tลรญdy pลedstavuje ลรกdek v tรฉto tลรญdฤ.
ActiveRecord je populรกrnฤ oznaฤovรกn jako ORM (Object Relational Mapping), coลพ je technika, kterรก vรกm umoลพลuje spravovat databรกzi pomocรญ jazyka, kterรฝ vรกm nejvรญce vyhovuje. Je databรกzovรฝ agnostik, takลพe mลฏลพete snadno pลepรญnat mezi databรกzemi (napล SQLite, MySQL, PostgreSQL, SQL Server, Oracle, atd.). Tato sada vรญce pro vaลกe poลพadavky aplikace se stejnรฝm kรณdem/logikou.
Pokud tedy chcete zรญskat pole obsahujรญcรญ seznam vลกech seznamลฏ รบkolลฏ ve vaลกรญ aplikaci, tak mรญsto psanรญ kรณdu pro zahรกjenรญ pลipojenรญ k databรกzi proveฤte nฤjakรฝ dotaz SQL SELECT a pลeveฤte tyto vรฝsledky na pole.
K tomu staฤรญ napsat 'TodoList.all' a Active Record vรกm dรกvรก pole plnรฉ objektลฏ TodoList, se kterรฝmi si mลฏลพete hrรกt, jak chcete.
Vลกe, co musรญte udฤlat, je nastavit sprรกvnou konfiguraci config/database.ymla Active Record vyลeลกรญ vลกechny rozdรญly mezi rลฏznรฝmi databรกzovรฝmi systรฉmy. Takลพe kdyลพ pลejdete z jednoho do druhรฉho, nemusรญte na to myslet.
Soustลedรญte se na psanรญ kรณdu pro vaลกi aplikaci a Active Record bude myslet na nรญzkoรบrovลovรฉ detaily vaลกeho pลipojenรญ k vaลกรญ databรกzi. Active Record vyuลพรญvรก konvence pojmenovรกnรญ k vytvoลenรญ mapovรกnรญ mezi modely a databรกzovรฝmi tabulkami.
Rails pluralizujรญ nรกzvy tลรญd vaลกeho modelu, aby naลกli odpovรญdajรญcรญ databรกzovou tabulku. Pro tลรญdu TodoList tedy ActiveRecord vytvoลรญ databรกzovou tabulku nazvanou TodoLists.
ลฝeleznice โ migrace
Migrace Rails je jednoduลกe skript, kterรฝ pouลพรญvรกte k รบpravฤ databรกze aplikace. Pouลพรญvรก se k nastavenรญ nebo zmฤnฤ databรกze a vyhรฝbรก se ruฤnรญmu psanรญ kรณdu SQL.
Pouลพรญvรก Ruby k definovรกnรญ zmฤn databรกzovรฉho schรฉmatu a umoลพลuje pouลพรญvat sprรกvu verzรญ, aby byla databรกze synchronizovanรก.
Migrace Rails pouลพรญvajรญ jazyk DSL (Ruby Domain Specific Language). To funguje jako abstrakce a umoลพลuje pouลพรญvat nebo mฤnit vรกลก databรกzovรฝ stroj na zรกkladฤ vaลกich poลพadavkลฏ.
Mohou bรฝt sdรญleny s kรฝmkoli, kdo pracuje na aplikaci, a lze je takรฉ vrรกtit zpฤt a vrรกtit zpฤt jakรฉkoli zmฤny v databรกzi. Jednรก se o vysoce bezpeฤnรฝ mechanismus, protoลพe se nemusรญte obtฤลพovat trvalรฝm poลกkozenรญm databรกze.
Rails โ ActiveRecord Associations
Spojenรญ mezi dvฤma modely ActiveRecord se nazรฝvรก asociace. Pลidruลพenรญ vรฝraznฤ usnadลuje provรกdฤnรญ operacรญ s rลฏznรฝmi zรกznamy ve vaลกem kรณdu. Dรก se rozdฤlit do ฤtyล kategoriรญ: โ
Jednou se jeden: โ To znamenรก, ลพe zรกznam obsahuje prรกvฤ jednu instanci jinรฉho modelu. Dobrรฝm pลรญkladem je uลพivatelskรฝ profil. Uลพivatel mรก pouze jeden profil. Pouลพรญvรก mรก _jeden klรญฤovรฉ slovo.
Jeden mnoha: โ Toto je nejbฤลพnฤjลกรญ spojenรญ a oznaฤuje, ลพe jeden model mรก nula nebo vรญce instancรญ jinรฉho modelu. Vaลกe pouลพitรญ mรก _mnoho klรญฤovรฉ slovo k oznaฤenรญ tรฉto asociace.
Mnoho na mnoho: โ Toto pลidruลพenรญ je o nฤco sloลพitฤjลกรญ a ActiveRecord poskytuje dva zpลฏsoby, jak s nรญm zachรกzet. Za pouลพitรญ mรก_a_patลรญ_k_mnohรฝm a mรก hodnฤ, coลพ vรกm umoลพลuje pลรญstup k relaci, kterรก je definovรกna v samostatnรฉ tabulce.
Polymorfnรญ od jednoho k mnoha:- Toto je pokroฤilejลกรญ pลidruลพenรญ, kterรฉ mรกte k dispozici v Rails. Mลฏลพete jej pouลพรญt k definovรกnรญ modelu, kterรฝ mลฏลพe patลit k mnoha rลฏznรฝm modelลฏm v jednรฉ asociaci.
Rails โ ActiveRecord Validations
Validace pomรกhรก zajistit, ลพe mรกte sprรกvnรก data, protoลพe prรกce s nesprรกvnรฝmi daty je straลกnรก vฤc a mohla by vรกs stรกt vaลกe penรญze a podnikรกnรญ.
Ovฤลenรญ takรฉ poskytuje dalลกรญ vrstvu zabezpeฤenรญ pro vaลกi aplikaci proti uลพivatelลฏm se zlรฝmi รบmysly v zรญskรกnรญ pลรญstupu k informacรญm ve vaลกรญ databรกzi. Rails vรกm nabรญzรญ pฤknรฉ API pomocnรญkลฏ pro ovฤลovรกnรญ v ActiveRecord, aby byla vaลกe databรกze ฤistรก, zabezpeฤenรก a bez chyb.
Ovฤลenรญ ActiveRecord se spouลกtรญ na modelovรฝch objektech pลed uloลพenรญm do databรกze, coลพ je ฤinรญ spolehlivฤjลกรญmi a takรฉ osvฤdฤenรฝmi postupy, kterรฉ je tลeba dodrลพovat pลi vytvรกลenรญ vaลกรญ aplikace.
Nรกsledujรญcรญ metody ActiveRecord vyvolรกvajรญ ovฤลenรญ pลi pouลพitรญ nebo volรกnรญ na objektech modelu โ vytvoลit, vytvoลit!, uloลพit, uloลพit!, aktualizovat a aktualizovat!. Ti s ofinou (vytvoลit!, uloลพit! a aktualizovat!) vyvolรก vรฝjimku, pokud je zรกznam neplatnรฝ, zatรญmco ththhen'tt't't.
Nejbฤลพnฤjลกรญ pomocnรญci pro validaci ActiveRecord, kterรฉ mรกte k dispozici, jsou: -
Potvrzenรญ:โ Tento pomocnรญk pro ovฤลenรญ je uลพiteฤnรฝ pro ovฤลenรญ, ลพe dvฤ pole majรญ stejnรฝ zรกznam. napล. heslo a potvrzenรญ hesla, pouลพรญvรก se ve spojenรญ s pomocnรญkem pro ovฤลenรญ pลรญtomnosti.
Pลรญtomnost:โ Tรญm se zkontroluje, zda pole nenรญ prรกzdnรฉ.
jedineฤnost: zajiลกลฅuje jedineฤnou hodnotu pro pole, napล. uลพivatelskรฉ jmรฉno
Dรฉlka:- Chcete-li vynutit omezenรญ dรฉlky znakลฏ v poli
Mลฏลพete takรฉ vytvoลit vlastnรญ ovฤลenรญ pomocรญ metody ovฤลenรญ a pลedรกnรญ nรกzvu vlastnรญ metody ovฤลenรญ.
Mลฏลพete zkontrolovat modely chyba objekt, abyste zjistili, proฤ validace. Doufejme, ลพe mรกte nฤjakรฉ nรกpady, jak svou aplikaci vรญce omezit a zabezpeฤit tak, aby do vaลกรญ databรกze umoลพลovala pouze zabezpeฤenรก data.
Rails โ ActionController
Ovladaฤ Rails je centrem vaลกรญ webovรฉ aplikace. Usnadลuje a koordinuje komunikaci mezi uลพivatelem, modely a pohledy.
Vaลกe tลรญdy ลadiฤลฏ dฤdรญ z ApplicationController, kterรฝ obsahuje kรณd, kterรฝ lze spustit ve vลกech ostatnรญch ลadiฤรญch, a dฤdรญ z tลรญdy ActionController.
Ovladaฤ poskytuje vaลกรญ aplikaci nรกsledujรญcรญ:
- Smฤruje externรญ poลพadavky na internรญ akce
- Zvlรกdรก uklรกdรกnรญ do mezipamฤti, coลพ zvyลกuje vรฝkon vaลกรญ aplikace
- Spravuje pomocnรฉ metody, kterรฉ rozลกiลujรญ moลพnosti ลกablon zobrazenรญ. Spravuje takรฉ uลพivatelskรฉ relace a umoลพลuje jim bezproblรฉmovรฉ pouลพรญvรกnรญ vaลกรญ aplikace.
Kolejnice โ konfigurace
Mลฏลพete nakonfigurovat rลฏznรฉ komponenty, jako jsou inicializรกtory, aktiva, generรกtory, middleware atd. Pomocรญ inicializรกtorลฏ a konfiguraฤnรญch souborลฏ aplikace Rails v adresรกลi config. Soubory jako config/application.rb, config/environments/development.rb a config/environments/test.rb atd. Mลฏลพete si takรฉ nechat nakonfigurovat vlastnรญ nastavenรญ pro vaลกi aplikaci.
Rails โ Ladฤnรญ
Pลi sestavovรกnรญ aplikace pลijde ฤas, kdy budete potลebovat/musรญte ladit svลฏj kรณd. Kolejnice to usnadลujรญ pomocรญ drahokamu byebug. Relaci ladฤnรญ mลฏลพete zahรกjit vloลพenรญm klรญฤovรฉho slova 'byebeg' kamkoli do kรณdu aplikace.
To doฤasnฤ zastavรญ provรกdฤnรญ v tomto okamลพiku. Drahokam byebug vรกm dรกvรก nฤkolik pลรญkazลฏ, kterรฉ mลฏลพete pouลพรญt. Nejuลพiteฤnฤjลกรญ jsou:
- dalลกรญ: pลรญkaz, kterรฝ vรกm umoลพnรญ pลejรญt na dalลกรญ ลรกdek kรณdu a pลeskoฤit vลกechny metody vyvolanรฉ provedenรญm aktuรกlnรญho ลรกdku.
- krok: toto je podobnรฉ pลรญkazu 'next', ale pลimฤje vรกs vstoupit do kaลพdรฉho vyvolanรฉho.
- rozbรญt: toto zastavรญ provรกdฤnรญ kรณdu.
- pokraฤovat pokraฤuje provรกdฤcรญ kรณd.
K dispozici jsou dalลกรญ ladicรญ klenoty, jako je โpryโ, a vลกechny poskytujรญ podobnรฉ funkce, ale mรญrnฤ odliลกnou syntaxi. Ladicรญ drahokamy by se nemฤly pouลพรญvat v produkci, protoลพe to pลedstavuje riziko pro vaลกi aplikaci a ลกpatnรฉ zkuลกenosti pro uลพivatele vaลกรญ aplikace.
Existujรญ soubory protokolu, ve kterรฝch mลฏลพete zkontrolovat chyby ve vรฝrobฤ a zpracovat je. Pลi vรฝvoji aplikace byste takรฉ mฤli dodrลพovat pลรญstup TDD (Test-driven development), abyste se ujistili, ลพe vลกe dobลe funguje pลed nasazenรญm do produkce.
Shrnutรญ
- Ruby je ฤistฤ objektovฤ orientovanรฝ programovacรญ jazyk
- Ruby mรก elegantnรญ syntaxi, kterรก se snadno ฤte i pรญลกe.
- Rails je vรฝvojovรฝ rรกmec napsanรฝ v Ruby pro vytvรกลenรญ webovรฝch aplikacรญ
- Proces instalace bude zรกviset na vaลกem operaฤnรญm systรฉmu.
- Rails je zabalen jako drahokam Ruby a mลฏลพete jej pouลพรญt k vytvoลenรญ rลฏznรฝch aplikacรญ.
- V tomto tutoriรกlu vytvoลรญte aplikaci Todo list, spusลฅte followincomm'n'n' 'rails netoda'p'p'p' v terminรกlu R a vytvoลte aplikaci.
- Pลรญkaz Rails generation vyuลพรญvรก ลกablony k vytvoลenรญ spousty uลพiteฤnรฝch vฤcรญ ve vaลกรญ aplikaci.
- Smฤrovacรญ systรฉm Rails, Rails router vรกm pomลฏลพe vyลรญdit vลกechny pลรญchozรญ poลพadavky do vaลกรญ webovรฉ aplikace.
- Vrstva View je jednou ze souฤรกstรญ paradigmatu MVC a je zodpovฤdnรก za generovรกnรญ HTML odpovฤdi pro kaลพdรฝ poลพadavek na vaลกi aplikaci.
- ActiveRecord je Ruby implementace vzoru Active Record.
- Migrace Rails je jednoduลกe skript, kterรฝ pouลพรญvรกte k รบpravฤ databรกze aplikace.
- Spojenรญ mezi dvฤma modely ActiveRecord se nazรฝvรก asociace.
- Validace pomรกhรก zajistit, ลพe mรกte sprรกvnรก data, protoลพe prรกce s nesprรกvnรฝmi daty je straลกnรก vฤc a mohla by vรกs stรกt vaลกe penรญze a podnikรกnรญ.
- Ovladaฤ Rails vรกm pomลฏลพe usnadnit a koordinovat komunikaci mezi uลพivatelem, modely a pohledy.
- Rail vรกm pomลฏลพe nakonfigurovat rลฏznรฉ komponenty, jako jsou inicializรกtory, aktiva, generรกtory, middleware atd.













