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รฝ framework napsanรฝ v Ruby pro tvorbu webovรฝch aplikacรญ. Byl vytvoล™en jako zรกklad aplikace Basecamp a potรฉ byl v roce 2004 vydรกn jako open-source software. Rails nabรญzรญ mnoho vestavฤ›nรฝch standardnรญch funkcรญ a funkcionalit, coลพ z nฤ›j ฤinรญ vhodnou volbu pro MVP prototypy.ping a rozvoj.

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 vรฝvojiping on 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 budete poลพรกdรกni o zadรกnรญ hesla. Zadejte heslo pro Mac (znaky se pล™i psanรญ neuvidรญ). Po dokonฤenรญ stisknฤ›te klรกvesu Enter.ping vaลกe heslo. 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รก s ล™รญzenรญm vลกech aspektลฏ URL adres vaลกรญ webovรฉ aplikace. Rails ve vรฝchozรญm nastavenรญ pouลพรญvรก RESTful design zaloลพenรฝ na architektonickรฉm stylu REST, kterรฝ poskytuje mapuping mezi HTTP slovesy a poลพadavky (URL) a akcemi kontroleru.

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 vรฝchozรญ zpลฏsob zรกpisu klidnรฝch tras v Rails. Tento jedinรฝ ล™รกdek vytvoล™รญ sedm tras, vลกechny mapujรญping do kontroleru 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 bฤ›ลพnฤ› oznaฤovรกn jako ORM (Object Relational Map).ping), coลพ je technika, kterรก vรกm umoลพลˆuje spravovat databรกzi pomocรญ jazyka, se kterรฝm se nejlรฉpe vyznรกte. Je agnostickรก k databรกzi, takลพe mลฏลพete snadno pล™epรญnat mezi databรกzemi (napล™รญklad 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.

Vy se soustล™edรญte na psanรญ kรณdu pro vaลกi aplikaci a Active Record se postarรก o detaily pล™ipojenรญ k databรกzi. Active Record vyuลพรญvรก k vytvoล™enรญ mapy konvence pojmenovรกnรญ.ping 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 na Rails pouลพรญvajรญ jazyk Ruby specifickรฝ pro domรฉnu (DSL). Ten funguje jako abstraca umoลพลˆuje pouลพรญvat nebo mฤ›nit vรกลก databรกzovรฝ engine 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รฝ umoลพลˆuje pล™ejรญt na dalลกรญ ล™รกdek kรณdu, pล™eskoฤitping vลกechny metody volanรฉ spuลกtฤ›nรญ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 protokolลฏ, kterรฉ mลฏลพete v produkฤnรญm prostล™edรญ kontrolovat, zda neobsahujรญ chyby, a opravit je. Pล™i vรฝvoji byste se takรฉ mฤ›li ล™รญdit pล™รญstupem TDD (vรฝvoj ล™รญzenรฝ testy).ping vaลกi aplikaci, abyste se ujistili, ลพe vลกe funguje sprรกvnฤ›, neลพ ji nasadรญte do produkฤnรญho prostล™edรญ.

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: