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:

Stรกhnฤ›te a nainstalujte Ruby na Windows

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.

Stรกhnฤ›te a nainstalujte Ruby na Windows

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.

Stรกhnฤ›te a nainstalujte Ruby na Windows

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.

Stรกhnฤ›te a nainstalujte Ruby na 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:

Rails โ€“ Struktura souborลฏ projektu

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.

Rails โ€“ Struktura souborลฏ projektu

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:

Rails โ€“ Generovรกnรญ pล™รญkazลฏ

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ฤ':

Rails โ€“ Generovรกnรญ pล™รญkazลฏ

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:

Kolejnice โ€“ smฤ›rovรกnรญ

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:

Kolejnice โ€“ smฤ›rovรกnรญ

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:

Kolejnice โ€“ smฤ›rovรกnรญ

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ลฏ:

Kolejnice โ€“ smฤ›rovรกnรญ

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 โ€“ smฤ›rovรกnรญ

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.

Shrลˆte tento pล™รญspฤ›vek takto: