Tutorial Ruby on Rails

โšก Rezumat inteligent

Tutorialul Ruby on Rails prezintฤƒ framework-ul web open-source scris รฎn Ruby care susศ›ine Airbnb, GitHub ศ™i Shopify. Ghidul prezintฤƒ instalarea pe... Windows, Mac ศ™i Linux, generatoare Rails, rutare, vizualizฤƒri, ActiveRecord, validฤƒri ศ™i depanare.

  • ๐Ÿ’Ž Limbaj ศ™i cadru: Ruby este un limbaj dinamic, orientat pe obiecte, conceput pentru lizibilitate, iar Rails este framework-ul MVC full-stack construit pe acesta pentru nave.ping aplicaศ›ii web rapid.
  • ๐Ÿ› ๏ธ Configurare multi-platformฤƒ: Instalaศ›i Ruby ศ™i Rails pe Windows folosind RubyInstaller, pe Mac prin Homebrew ศ™i pe Ubuntu Linux prin apt urmat de instalarea gem prin rails.
  • ๐Ÿ›๏ธ Principii directoare: Rails impune principiile โ€žNu te repetaโ€ ศ™i โ€žConvenศ›iaโ€ รฎn locul configuraศ›iei, astfel รฎncรขt echipele sฤƒ scrie mai puศ›ine elemente standard ศ™i sฤƒ urmeze o structurฤƒ previzibilฤƒ a proiectului.
  • โš™๏ธ Generatorศ™i rutare: Foloseศ™te ศ™ine pentru a genera schele pentru a construi cod CRUD, apoi bazeazฤƒ-te pe config/routes.rb pentru a mapa RESTful URLs la acศ›iunile controlerului รฎn secunde.
  • ๐Ÿ—„๏ธ Putere ActiveRecord: ActiveRecord mapeazฤƒ clasele Ruby la tabelele bazei de date, acceptฤƒ migrฤƒri, asocieri ศ™i validฤƒri ศ™i menศ›ine consecvenศ›a datelor รฎn diferite medii.

Tutorial Ruby on Rails

Ce este Ruby?

Rubin este un limbaj de programare orientat pe obiecte, interpretat, de nivel รฎnalt. Este un limbaj open-source dinamic, cu o comunitate numeroasฤƒ รฎn spate. Ruby a fost conceput pentru simplitate ศ™i productivitate. รŽncurajeazฤƒ scrierea de cod software care pune pe primul loc omul ศ™i pe al doilea loc calculatorul. Yukihiro Matsumoto a creat Ruby รฎn Japonia รฎn 1995.

Ce este Rails?

Rails este un framework de dezvoltare scris รฎn Ruby pentru construirea de aplicaศ›ii web. A fost creat ca fundaศ›ie pentru aplicaศ›ia Basecamp ศ™i apoi lansat ca software open-source รฎn 2004. Rails oferฤƒ multe caracteristici ศ™i funcศ›ionalitฤƒศ›i standard รฎncorporate, ceea ce รฎl face o alegere potrivitฤƒ pentru prototipul MVP.ping ศ™i dezvoltarea rapidฤƒ a produselor.

Rails a fost creat de David Heinemeier Hansson, cunoscut sub numele de DHH. Este unul dintre cele mai influente ศ™i populare instrumente pentru construirea de aplicaศ›ii web. Este utilizat de site-uri importante precum Airbnb, GitHub ศ™i Shopify.

De ce ศ™ine?

รŽnainte de a instala lanศ›ul de scule, este util sฤƒ รฎnศ›elegeศ›i de ce ศ™inele rฤƒmรขn o alegere popularฤƒ pentru naveping aplicaศ›ii web rapid.

  • Rails este ambalat ca o bijuterie Ruby ศ™i รฎl puteศ›i folosi pentru a construi o gamฤƒ largฤƒ de aplicaศ›ii.
  • รŽศ›i permite sฤƒ construieศ™ti aplicaศ›ii web obiศ™nuite, site-uri de comerศ› electronic, sisteme de gestionare a conศ›inutului ศ™i multe altele.
  • Rails este un framework full-stack care include tot ce ai nevoie pentru a crea o aplicaศ›ie web bazatฤƒ pe baze de date folosind modelul Model-View-Controller (MVC).
  • Toate straturile sunt proiectate sฤƒ funcศ›ioneze perfect รฎmpreunฤƒ, aศ™a cฤƒ proiectele Rails necesitฤƒ de obicei mai puศ›ine linii de cod decรขt proiectele echivalente din alte framework-uri.

Cum sฤƒ descฤƒrcaศ›i ศ™i sฤƒ instalaศ›i Ruby pe Windows

Procesul de instalare depinde de sistemul de operare. Urmฤƒtoarele secศ›iuni acoperฤƒ instalarea Ruby pe Windows, Mac ศ™i Linux.

Pas 1) Descฤƒrcaศ›i programul de instalare Ruby.
Cel mai simplu mod de a instala Ruby pe dvs Windows calculatorul se face prin intermediul programului de instalare Ruby, disponibil la https://rubyinstaller.org/.

Odatฤƒ descฤƒrcat, rulaศ›i programul de instalare.

Pas 2) Faceศ›i clic pe programul de instalare descฤƒrcat.
Double-faceศ›i clic pe fiศ™ierul de instalare descฤƒrcat, de exemplu rubyinstaller-2.4.1-2-x64.exe.

Pas 3) Acceptaศ›i licenศ›a.
Selectaศ›i butonul radio โ€žAccept licenศ›aโ€ ศ™i faceศ›i clic pe butonul โ€žUrmฤƒtorulโ€. Ar trebui sฤƒ vedeศ›i ecranul de mai jos.

Descฤƒrcaศ›i ศ™i instalaศ›i Ruby pe Windows

Pas 4) Bifaศ›i primele douฤƒ casete de selectare.
Bifaศ›i primele douฤƒ casete de selectare pentru a uศ™ura rularea scripturilor Ruby.

Faceศ›i clic pe butonul โ€žInstalareโ€ pentru a รฎncepe instalarea. Ar trebui sฤƒ vedeศ›i ecranul de mai jos cรขnd se terminฤƒ.

Descฤƒrcaศ›i ศ™i instalaศ›i Ruby pe Windows

Pas 5) Faceศ›i clic pe Finalizare.
Nu debifaศ›i opศ›iunea care instaleazฤƒ MSYS2. Faceศ›i clic pe โ€žFinalizareโ€ pentru a finaliza instalarea. Se va deschide o fereastrฤƒ de comandฤƒ, aศ™a cum se aratฤƒ mai jos.

Descฤƒrcaศ›i ศ™i instalaศ›i Ruby pe Windows

Pas 6) Instalaศ›i MSYS2.
Acest pas instaleazฤƒ MSYS2, o platformฤƒ de compilare care include un manager de pachete pentru instalarea uศ™oarฤƒ a pachetelor pe Windows.

Apฤƒsaศ›i Enter pentru a instala toate componentele, deoarece toate sunt necesare pentru un mediu de dezvoltare Ruby on Rails fฤƒrฤƒ probleme pe Windows.

Descฤƒrcaศ›i ศ™i instalaศ›i Ruby pe Windows

Instalarea ศ™inelor

Ar trebui sฤƒ aveศ›i Ruby instalat conform secศ›iunii anterioare. Apoi, instalaศ›i Rails. Puteศ›i instala Rails folosind un pachet de la RailsInstaller, dar pachetul adesea nu livreazฤƒ cea mai recentฤƒ versiune a fiecฤƒrei dependenศ›e necesare.

Dacฤƒ aveศ›i deja instalatฤƒ cea mai recentฤƒ versiune de Ruby ศ™i versiunile de bazฤƒ RubyGems ศ™i extensiile, pur ศ™i simplu executaศ›i urmฤƒtoarea comandฤƒ din promptul de comandฤƒ pentru a instala Rails pe sistemul dvs.: gem install rails.

De asemenea, va trebui sฤƒ instalaศ›i Node.js dacฤƒ nu รฎl aveศ›i deja, deoarece unele biblioteci de care depinde Rails necesitฤƒ un JavaRuntime-ul scriptului sฤƒ funcศ›ioneze corect. Obศ›ineศ›i Node la https://nodejs.org.

O abordare mai comunฤƒ ศ™i preferatฤƒ privind Windows este de a utiliza Windows Subsistem pentru Linux. Acesta oferฤƒ un mediu GNU/Linux cu instrumente de linie de comandฤƒ, utilitare ศ™i aplicaศ›ii comune direct รฎn interior. Windows.

Instalarea Ruby pe Mac

Mac-ul tฤƒu are deja Ruby preinstalat. Cu toate acestea, versiunea preinstalatฤƒ este adesea รฎnvechitฤƒ, aศ™a cฤƒ ar trebui sฤƒ instalezi o versiune mai nouฤƒ.

Cea mai uศ™oarฤƒ modalitate de a face acest lucru este sฤƒ utilizaศ›i un manager de pachete, cum ar fi HomebrewEste posibil sฤƒ fie nevoie sฤƒ instalaศ›i mai รฎntรขi Homebrew rulรขnd comanda de mai jos รฎn Terminal.

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Aceasta afiศ™eazฤƒ un avertisment ศ™i vฤƒ solicitฤƒ sฤƒ introduceศ›i parola. Introduceศ›i parola Mac-ului (caracterele nu apar pe mฤƒsurฤƒ ce tastaศ›i) ศ™i apฤƒsaศ›i Enter cรขnd aศ›i terminat. Apoi, executaศ›i aceastฤƒ comandฤƒ Homebrew pentru a instala Ruby pe Mac.

brew install ruby

Apoi executaศ›i aceastฤƒ comandฤƒ:

echo 'export PATH="/usr/local/bin:/usr/local/sbin:$PATH"' >> ~/.bash_profile

Aceasta seteazฤƒ noua instalare Ruby ca Ruby implicit pe sistemul dvs., รฎn loc de Ruby preinstalat.

Pentru a confirma cฤƒ instalarea a avut succes, executaศ›i urmฤƒtoarele รฎn Terminal:

ruby --version

Aceasta afiศ™eazฤƒ numฤƒrul versiunii Ruby instalate. Rezultatul aratฤƒ cam aศ™a:

ruby 2.6.0p0 (2018-12-25 revision 66547) [x86_64-darwin18]

Instalarea Ruby pe Ubuntu (Linux)

Cea mai uศ™oarฤƒ metodฤƒ de a instala Ruby pe Ubuntu se face prin intermediul managerului de pachete apt. Rulaศ›i urmฤƒtoarele comenzi รฎn Terminal pentru a instala cea mai recentฤƒ versiune de Ruby de pe Ubuntu arhive.

  • sudo apt update โ€“ Aceasta actualizeazฤƒ setฤƒrile implicite Ubuntu arhive.
  • sudo apt instaleazฤƒ ruby-full โ€“ Aceasta descarcฤƒ ศ™i instaleazฤƒ cea mai recentฤƒ versiune de Ruby.

Pentru a confirma instalarea, rulaศ›i versiunea rubyAceasta afiศ™eazฤƒ versiunea de Ruby pe care aศ›i instalat-o.

Instalarea ศ™inelor pe Ubuntu (Linux)

Urmaศ›i paศ™ii de mai jos pentru a instala Rails pe maศ™ina dvs. Linux.

Pas 1) Actualizaศ›i managerul de pietre preศ›ioase rulรขnd gem update -system รฎn Terminal sau รฎn linia de comandฤƒ.

Pas 2) Alerga ศ™ine de instalare a gemelor pentru a instala cea mai recentฤƒ versiune de Rails pe computer.

Pas 3) Instalaศ›i gem-ul bundler pentru o gestionare uศ™oarฤƒ a dependenศ›elor gem-ului aplicaศ›iei Rails. Rulaศ›i bundler de instalare de pietre preศ›ioase.

Douฤƒ principii ale ศ™inelor

Rails respectฤƒ principiile de bazฤƒ ale proiectฤƒrii software ศ™i te รฎncurajeazฤƒ sฤƒ le foloseศ™ti ศ™i pe acestea.

Cele mai frecvente douฤƒ sunt:

  • Nu te repeta (DRY) โ€“ aceasta duce la un cod concis, consistent ศ™i uศ™or de รฎntreศ›inut.
  • Convenศ›ie asupra configuraศ›iei โ€“ Rails este preconfigurat cu setฤƒri implicite practice care se potrivesc celei mai comune utilizฤƒri. Acest lucru face ca dezvoltarea aplicaศ›iilor sฤƒ fie rapidฤƒ ศ™i vฤƒ lasฤƒ cu mai puศ›in cod de รฎntreศ›inut.

Sine โ€“ Structuri de fiศ™iere de proiect

Cu Rails instalat pe sistem, creaศ›i o aplicaศ›ie Rails. Urmฤƒtoarele secศ›iuni prezintฤƒ un exemplu Ruby on Rails prin construirea unei aplicaศ›ii cu listฤƒ de activitฤƒศ›i. Rulaศ›i urmฤƒtoarea comandฤƒ รฎn Terminal pentru a crea aplicaศ›ia:

rails new todo_app

Aceastฤƒ comandฤƒ creeazฤƒ un director numit tot_app รฎn directorul curent cu structura de foldere de bazฤƒ a unei aplicaศ›ii web Rails, aศ™a cum se aratฤƒ mai jos.

Sine โ€“ Structuri de fiศ™iere de proiect

Iatฤƒ principalele directoare generate pentru proiect:

aplicaลฃia โ€“ grupeazฤƒ subdirectoare pentru UI/layout (views ศ™i helpers), controller (fiศ™iere controller) ศ™i modele (logica de business/aplicaศ›ie).

aplicaศ›ie/controlere โ€“ stocheazฤƒ fiศ™ierele controller utilizate de Rails pentru a gestiona cererile de la client.

aplicaศ›ie/active โ€“ conศ›ine fiศ™iere statice necesare front-end-ului aplicaศ›iei, grupate dupฤƒ tip: JavaScenariu fiศ™iere, imagini ศ™i foi de stil.

aplicaศ›ie/ajutoare โ€“ conศ›ine funcศ›ii auxiliare care menศ›in modelul aplicaศ›iei, vizualizarea ศ™i logica controlerului concentrate, mici ศ™i ordonate.

aplicaศ›ie/modele โ€“ conศ›ine fiศ™iere care modeleazฤƒ baza de date a aplicaศ›iei. Clasele model faciliteazฤƒ foarte mult lucrul cu baza de date.

aplicaศ›ie/vizualizฤƒri โ€“ conศ›ine fiศ™ierele ศ™ablon/layout cu care interacศ›ioneazฤƒ utilizatorul aplicaศ›iei. ศ˜abloanele combinฤƒ HTML cu date din baza de date.

bin โ€“ conศ›ine scripturi Rails care pornesc aplicaศ›ia. Poate include ศ™i alte scripturi pe care le utilizaศ›i pentru a configura ศ™i actualiza aplicaศ›ia.

config โ€“ conศ›ine fiศ™iere de configurare, cum ar fi baza de date.yml, mediu.rb, rute.rb, etc., de care aplicaศ›ia dvs. are nevoie pentru a rula.

db โ€“ conศ›ine fiศ™iere ศ™i scripturi utilizate pentru gestionarea bazei de date a aplicaศ›iei.

lib โ€“ conศ›ine module extinse pentru aplicaศ›ia dumneavoastrฤƒ.

log โ€“ conศ›ine fiศ™iere jurnal, cum ar fi server.log, development.log, test.log ศ™i production.log, utilizat pentru depanarea sau monitorizarea aplicaศ›iei.

public โ€“ conศ›ine fiศ™iere statice ศ™i resurse compilate, cum ar fi fiศ™iere HTML, JavaFiศ™iere script, imagini ศ™i foi de stil.

test โ€“ conศ›ine fiศ™iere de test pe care le scrieศ›i pentru a testa funcศ›ionalitatea aplicaศ›iei.

tmp โ€“ conศ›ine fiศ™iere temporare precum fiศ™ierele cache ศ™i pid.

vรขnzฤƒtor โ€“ conศ›ine biblioteci terศ›e.

Gemfile โ€“ specificฤƒ cerinศ›ele de bazฤƒ ale gem-urilor pentru a rula aplicaศ›ia web. Puteศ›i grupa gem-urile รฎn dezvoltare, testare sau producศ›ie, iar Rails va ศ™ti cรขnd sฤƒ includฤƒ fiecare gem.

Gemfile.lock โ€“ spre deosebire de Gemfile, care listeazฤƒ explicit gemurile dorite รฎn aplicaศ›ia dvs., Gemfile.lock conศ›ine suplimentar alte gemuri de care depind cele listate รฎn Gemfile. Acestea sunt instalate automat pentru a satisface dependenศ›ele.

Readme.md โ€“ foloseศ™te acest fiศ™ier pentru a partaja detalii esenศ›iale despre aplicaศ›ia ta, cum ar fi ce face aplicaศ›ia ศ™i cum se instaleazฤƒ ศ™i se ruleazฤƒ.

Rakefile โ€“ conศ›ine diverse definiศ›ii de sarcini rake care ajutฤƒ la automatizarea sarcinilor de administrare zilnice ale aplicaศ›iei tale.

config.ru โ€“ un fiศ™ier de configurare Rack care oferฤƒ o interfaศ›ฤƒ cฤƒtre serverul web pentru a porni aplicaศ›ia.

Schimbaศ›i directorul รฎn tot_app directorul Rails generat ศ™i rulat serverul Rails pentru a porni aplicaศ›ia. Tip localhost: 3000 รฎn bara de adrese a browserului web. Ar trebui sฤƒ vedeศ›i ecranul de mai jos dacฤƒ totul a mers bine.

Sine โ€“ Structuri de fiศ™iere de proiect

Aceasta este pagina principalฤƒ implicitฤƒ a aplicaศ›iei tale. O vei modifica รฎntr-o secศ›iune ulterioarฤƒ a acestui tutorial Ruby on Rails. Poศ›i opri serverul apฤƒsรขnd Ctrl + C.

ศ˜ine โ€“ Generare comenzi

Comanda Rails generate foloseศ™te ศ™abloane pentru a crea multe lucruri utile รฎn aplicaศ›ia ta. Aceste generatoare economisesc mult timp.

Ei scriu cod standard necesar pentru ca aplicaศ›ia ta web sฤƒ funcศ›ioneze. Executฤƒ ศ™inele genereazฤƒ singur la linia de comandฤƒ sau รฎn Terminal pentru a vedea o listฤƒ de generatoare disponibile, aศ™a cum se aratฤƒ mai jos.

Rails โ€“ Generaศ›i comenzi

De asemenea, puteศ›i rula ศ™inele genereazฤƒ pentru a vedea o descriere a ceea ce face comanda. Listeazฤƒ opศ›iuni convenabile ศ™i un exemplu de utilizare. Figura de mai jos prezintฤƒ rezultatul rulฤƒrii controler de generare a ศ™inelor.

Rails โ€“ Generaศ›i comenzi

Foloseศ™te comanda rails generate scaffold pentru a crea automat modelul, vizualizarea ศ™i controlerul pentru aplicaศ›ia Listฤƒ de activitฤƒศ›i pe care o construieศ™ti. Executฤƒ urmฤƒtoarele รฎn Terminal (asigurฤƒ-te cฤƒ eศ™ti รฎncฤƒ รฎn tot_app director):

rails generate scaffold todo_list title:string description:text

Aceasta creeazฤƒ o interfaศ›ฤƒ web CRUD (Creare, Citire, Actualizare, ศ˜tergere) completฤƒ pentru tabelul TodoLists.

O altฤƒ comandฤƒ utilฤƒ de ศ™tiut este ศ™inele distrugInverseazฤƒ orice ศ™inele genereazฤƒ nu.

Sine โ€“ Trasare

Sistemul de rutare Rails, numit router Rails, gestioneazฤƒ toate cererile primite cฤƒtre aplicaศ›ia web. Acesta examineazฤƒ URL a fiecฤƒrei cereri ศ™i o mapeazฤƒ la acศ›iunea controlerului responsabilฤƒ de gestionarea acesteia, folosind sintaxa specificatฤƒ รฎn fiศ™ierul rute (config/rute.rb).

Fiศ™ierul de rute controleazฤƒ fiecare URL aspect al aplicaศ›iei web. Rails foloseศ™te un design RESTful bazat pe stilul arhitectural REST, care oferฤƒ o hartฤƒping รฎntre verbele HTTP ศ™i cerere URLs la acศ›iunile controlerului.

Fiศ™ierul rute a fost generat cรขnd aศ›i rulat ศ™ine noi mai devreme. Continuรขnd cu aplicaศ›ia Todo pe care o construiศ›i, executaศ›i urmฤƒtoarele:

rails db:migrate

Asiguraศ›i-vฤƒ cฤƒ sunteศ›i รฎncฤƒ la rฤƒdฤƒcina aplicaศ›iei ( tot_app director).

Porniศ›i din nou serverul cu serverul Rails. Tip http://localhost:3000/todo_lists/ รฎn browser ศ™i apฤƒsaศ›i Enter. Ar trebui sฤƒ primiศ›i din nou o paginฤƒ web ca cea de mai jos.

Sine โ€“ Trasare

Aceasta este vizualizarea listelor de activitฤƒศ›i generatฤƒ de comanda scaffold ศ™i este controlatฤƒ de TodoListsController. index acลฃiune.

Adฤƒugaศ›i o listฤƒ de activitฤƒศ›i fฤƒcรขnd clic pe โ€žListฤƒ nouฤƒ de activitฤƒศ›iโ€ pe paginฤƒ. Ar trebui sฤƒ vedeศ›i ecranul de mai jos.

Sine โ€“ Trasare

Observaศ›i URL este acum http://localhost:3000/todo_lists/newAceasta este pagina pentru a crea o nouฤƒ listฤƒ de activitฤƒศ›i ศ™i este controlatฤƒ de TodoListsController. nou metodฤƒ.

Introduceศ›i titlul ศ™i descrierea listei de sarcini รฎn formular ศ™i faceศ›i clic pe โ€žCreaศ›i o listฤƒ de sarciniโ€. URL ar trebui sฤƒ se schimbe รฎn http://localhost:3000/todo_lists/1, aศ™a cum se aratฤƒ mai jos.

Sine โ€“ Trasare

Aceasta este pagina de afiศ™are a unei liste de activitฤƒศ›i, controlatฤƒ de TodoListsController. Arฤƒta metodฤƒ. Dacฤƒ te รฎntorci la http://localhost:3000/todo_lists/, ar trebui sฤƒ vedeศ›i acum ecranul de mai jos cu noua listฤƒ de activitฤƒศ›i adฤƒugatฤƒ.

Sine โ€“ Trasare

Rails a reuศ™it sฤƒ mapeze fiecare cerere la acศ›iunea TodoListsController corespunzฤƒtoare folosind definiศ›ia rutei din config/rute.rb.

Dacฤƒ te uiศ›i la acest fiศ™ier, vei vedea o singurฤƒ linie resurse :todo_lists, care este modul implicit Rails de scriere a rutelor RESTful. Aceastฤƒ singurฤƒ linie creeazฤƒ ศ™apte rute, toate mapรขndping cฤƒtre controlerul TodoLists.

Prin convenศ›ie, fiecare acศ›iune a controlerului se mapeazฤƒ la o operaศ›iune CRUD (Creare, Citire, Actualizare, ศ˜tergere) specificฤƒ din baza de date.

Alerga rute feroviare รฎn linia de comandฤƒ pentru a vedea diferitele rute disponibile รฎn aplicaศ›ia dvs. Figura de mai jos prezintฤƒ rezultatul rulฤƒrii rute feroviare.

Sine โ€“ Trasare

ศ˜ine โ€“ Vizualizฤƒri

Stratul de vizualizare este una dintre componentele paradigmei MVC ศ™i este responsabil pentru generarea rฤƒspunsului HTML pentru fiecare solicitare cฤƒtre aplicaศ›ia dumneavoastrฤƒ. Rails foloseศ™te รฎn mod implicit ERB (Embedded Ruby), care este un sistem puternic de ศ™ablonare pentru Ruby.

ERB faciliteazฤƒ scrierea ศ™i รฎntreศ›inerea ศ™abloanelor prin combinarea textului simplu cu cod Ruby pentru substituirea variabilelor ศ™i controlul fluxului. Un ศ™ablon ERB foloseศ™te .html.erb extensie.

Veศ›i folosi รฎn mare parte douฤƒ marcaje de etichete, fiecare dintre acestea determinรขnd procesarea ศ™i gestionarea codului รฎncorporat รฎntr-un anumit mod.

O etichetฤƒ cu semnul egal <%= %> indicฤƒ faptul cฤƒ codul รฎncorporat este o expresie, iar rezultatul codului ar trebui รฎnlocuit รฎn ieศ™ire atunci cรขnd ศ™ablonul este redat.

Cealaltฤƒ etichetฤƒ fฤƒrฤƒ semn de egalitate <% %> indicฤƒ programului de redare cฤƒ rezultatul codului nu ar trebui รฎnlocuit sau afiศ™at รฎn ieศ™ire.

Fiecare controler din aplicaศ›ia dumneavoastrฤƒ Rails are un subdirector corespunzฤƒtor รฎn aplicaศ›ie/vizualizฤƒri, iar fiecare acศ›iune dintr-un controler are un corespondent .html.erb fiศ™ierul din subdirectorul respectiv.

Aruncati o privire la aplicaศ›ie/vizualizฤƒri din aplicaศ›ia Todo pe care o construiศ›i. Veศ›i gฤƒsi un subdirector numit liste_de_trebuie_sฤƒ_fate conศ›inรขnd .html.erb fiศ™iere cu nume corespunzฤƒtoare acศ›iunilor din TodoLists controler.

ศ˜ine โ€“ ActiveRecord, Active Record Pattern ศ™i ORM

ActiveRecord este implementarea Ruby a modelului Active Record. รŽn acest model, o clasฤƒ reprezintฤƒ un tabel al bazei de date, iar o instanศ›ฤƒ a clasei reprezintฤƒ un rรขnd din acel tabel.

ActiveRecord este denumit รฎn mod obiศ™nuit ORM (Object Relational Map)ping), o tehnicฤƒ ce vฤƒ permite sฤƒ gestionaศ›i baza de date folosind un limbaj cu care vฤƒ simศ›iศ›i cel mai confortabil. Este agnostic faศ›ฤƒ de baza de date, aศ™a cฤƒ puteศ›i comuta cu uศ™urinศ›ฤƒ รฎntre baze de date โ€” de exemplu, SQLite, MySQL, PostgreSQL, SQL Server sau Oracle โ€” folosind acelaศ™i cod ศ™i aceeaศ™i logicฤƒ.

De exemplu, pentru a obศ›ine o matrice care conศ›ine fiecare listฤƒ Todo din aplicaศ›ia dvs., nu trebuie sฤƒ scrieศ›i cod care deschide o conexiune, ruleazฤƒ o interogare SQL SELECT ศ™i converteศ™te rezultatul.

Pur ศ™i simplu tastezi Lista de activitฤƒศ›i.toate, iar ActiveRecord returneazฤƒ matricea umplutฤƒ cu obiecte TodoList pe care le puteศ›i utiliza dupฤƒ cum doriศ›i.

Tot ce trebuie sฤƒ faci este sฤƒ configurezi configuraศ›ia รฎn config/database.ymlศ™i ActiveRecord gestioneazฤƒ diferenศ›ele dintre sistemele de baze de date. Cรขnd treceศ›i de la o bazฤƒ de date la alta, nu trebuie sฤƒ rescrieศ›i codul.

Te concentrezi pe logica aplicaศ›iei, iar ActiveRecord se ocupฤƒ de detaliile de nivel scฤƒzut ale conectฤƒrii la baza de date. Foloseศ™te convenศ›ii de denumire pentru a mapa modelele la tabelele bazei de date.

Rails pluralizeazฤƒ numele claselor modelului pentru a gฤƒsi tabelul corespunzฤƒtor din baza de date. Aศ™adar, pentru o clasฤƒ TodoList, ActiveRecord utilizeazฤƒ un tabel de bazฤƒ de date numit liste_de_trebuie_sฤƒ_fate.

Sine โ€“ Migraศ›ii

O migrare Rails este un script pe care รฎl utilizaศ›i pentru a evolua baza de date a aplicaศ›iei. Este folosit pentru a configura sau modifica baza de date fฤƒrฤƒ a scrie manual cod SQL.

Foloseศ™te Ruby pentru a defini modificฤƒrile schemei bazei de date ศ™i face posibilฤƒ utilizarea controlului versiunilor pentru a menศ›ine baza de date sincronizatฤƒ รฎntre medii.

Migrฤƒrile Rails utilizeazฤƒ un limbaj specific domeniului Ruby (DSL). Acesta acศ›ioneazฤƒ ca un abstracศ™i face posibilฤƒ utilizarea sau modificarea motorului bazei de date รฎn funcศ›ie de cerinศ›ele dumneavoastrฤƒ.

Migrฤƒrile pot fi partajate cu oricine lucreazฤƒ la aplicaศ›ie ศ™i pot fi, de asemenea, anulate pentru a anula modificฤƒrile. Acesta este un mecanism de siguranศ›ฤƒ puternic, deci nu trebuie sฤƒ vฤƒ faceศ›i griji cu privire la deteriorarea permanentฤƒ a bazei de date.

Rails โ€“ Asociaศ›ii ActiveRecord

O conexiune รฎntre douฤƒ modele ActiveRecord este cunoscutฤƒ sub numele de asociere. Asocierile faciliteazฤƒ mult efectuarea operaศ›iunilor asupra รฎnregistrฤƒrilor corelate din cod. Existฤƒ patru categorii comune.

Unu la Unu: o รฎnregistrare conศ›ine exact o instanศ›ฤƒ a unui alt model. Un bun exemplu este un profil de utilizator โ€” un utilizator are un singur profil. Acesta foloseศ™te are_unul cuvinte cheie.

Unu la Multi: cea mai comunฤƒ asociere โ€” un model are zero sau mai multe instanศ›e ale unui alt model. Foloseศ™te are_multe cuvรขnt cheie pentru a desemna aceastฤƒ asociere.

De la mulศ›i la mulศ›i: un pic mai complicat. ActiveRecord oferฤƒ douฤƒ modalitฤƒศ›i de a gestiona acest lucru: are_ศ™i_aparศ›ine_mulศ›i ศ™i are_multe :prin, care vฤƒ oferฤƒ acces la modelul de joncศ›iune definit รฎntr-un tabel separat.

Polimorfic de la unu la mai mulศ›i: o asociere mai avansatฤƒ รฎn Rails. Defineศ™te un model care poate aparศ›ine mai multor modele diferite pe o singurฤƒ asociere.

Rails โ€“ Validฤƒri ActiveRecord

Validarea ajutฤƒ la asigurarea faptului cฤƒ aveศ›i date corecte, deoarece lucrul cu date greศ™ite este riscant ศ™i poate costa bani afacerii dumneavoastrฤƒ.

Validarea oferฤƒ, de asemenea, un nivel suplimentar de securitate รฎmpotriva utilizatorilor rฤƒu intenศ›ionaศ›i care รฎncearcฤƒ sฤƒ introducฤƒ date dฤƒunฤƒtoare รฎn baza de date. Rails oferฤƒ o API curatฤƒ de instrumente de validare รฎn ActiveRecord care menศ›in baza de date curatฤƒ, securizatฤƒ ศ™i fฤƒrฤƒ erori.

Validฤƒrile ActiveRecord ruleazฤƒ pe obiectele modelului รฎnainte de salvarea รฎn baza de date, ceea ce le face mai fiabile ศ™i respectฤƒ cele mai bune practici.

Urmฤƒtoarele metode ActiveRecord declanศ™eazฤƒ validฤƒri atunci cรขnd sunt apelate pe obiecte de model: creaศ›i, creaศ›i!, salvaศ›i, salvaศ›i!, actualizaศ›i ศ™i actualizaศ›i!Versiunile Bang (creeazฤƒ!, salveazฤƒ! ศ™i actualizeazฤƒ!) ridicฤƒ o excepศ›ie dacฤƒ รฎnregistrarea este invalidฤƒ, รฎn timp ce versiunile non-bang returneazฤƒ รฎn schimb false.

Cele mai comune instrumente de asistenศ›ฤƒ pentru validarea ActiveRecord sunt:

  • Confirmare: valideazฤƒ faptul cฤƒ douฤƒ cรขmpuri au aceeaศ™i valoare, de exemplu parola ศ™i confirmarea parolei. Se utilizeazฤƒ รฎmpreunฤƒ cu ajutorul ajutorului de validare a prezenศ›ei.
  • Prezenลฃฤƒ: verificฤƒ dacฤƒ cรขmpul nu este gol.
  • unicitatea: asigurฤƒ o valoare unicฤƒ pentru un cรขmp, de exemplu numele de utilizator.
  • Durata: impune o limitฤƒ asupra lungimii caracterelor unui cรขmp.

De asemenea, puteศ›i crea propria validare personalizatฤƒ utilizรขnd valida metodฤƒ ศ™i transmiศ›รขndu-i numele unei metode de validare personalizate.

Verificaศ›i modelul Erori obiect pentru a afla de ce a eศ™uat o validare. Aceasta vฤƒ oferฤƒ tot ce aveศ›i nevoie pentru a face aplicaศ›ia mai restricศ›ionatฤƒ ศ™i mai sigurฤƒ, permiศ›รขnd doar date valide sฤƒ intre รฎn baza de date.

Sine โ€“ ActionController

Controlerul Rails este centrul aplicaศ›iei dvs. web. Faciliteazฤƒ ศ™i coordoneazฤƒ comunicarea dintre utilizator, modele ศ™i vederi.

Clasele tale de controler moศ™tenesc de la ApplicationController, care conศ›ine cod ce poate fi rulat รฎn toate celelalte controlere ศ™i care, la rรขndul sฤƒu, moศ™teneศ™te de la ActionController::Base.

Controlerul oferฤƒ urmฤƒtoarele aplicaศ›ii:

  • Dirige cererile externe cฤƒtre acศ›iuni interne.
  • Gestioneazฤƒ memoria cache, oferind รฎmbunฤƒtฤƒศ›iri de performanศ›ฤƒ aplicaศ›iei tale.
  • Gestioneazฤƒ metode auxiliare care extind capacitฤƒศ›ile ศ™ablonului de vizualizare ศ™i gestioneazฤƒ, de asemenea, sesiunile utilizatorilor, oferind utilizatorilor o experienศ›ฤƒ fluidฤƒ.

ศ˜ine โ€“ Configuraศ›ii

Puteศ›i configura componente precum iniศ›ializatoare, resurse, generatoare ศ™i middleware folosind iniศ›ializatoarele ศ™i fiศ™ierele de configurare ale aplicaศ›iei Rails din config director. Fiศ™iere precum config/aplicaศ›ie.rb, config/environments/development.rb ศ™i config/environments/test.rb sunt utilizate aici. De asemenea, puteศ›i adฤƒuga setฤƒri personalizate pentru aplicaศ›ia dvs.

Sine โ€“ Depanare

Pe mฤƒsurฤƒ ce construieศ™ti aplicaศ›ia, va trebui sฤƒ depanezi codul. Rails faciliteazฤƒ acest lucru cu ajutorul adio gemฤƒ. Puteศ›i รฎncepe o sesiune de depanare plasรขnd cuvรขntul cheie adio oriunde รฎn codul aplicaศ›iei tale.

Aceasta opreศ™te temporar execuศ›ia รฎn acel moment. Bijuteria byebug oferฤƒ mai multe comenzi. Cele mai utile sunt:

  • Urmฤƒtorul: trece la urmฤƒtoarea linie de cod, sare pesteping toate metodele invocate de linia curentฤƒ.
  • Etapa: similar urmฤƒtor, dar parcurge pas cu pas fiecare metodฤƒ invocatฤƒ.
  • pauzฤƒ: opreศ™te execuศ›ia codului.
  • continua: continuฤƒ execuศ›ia codului.

Sunt disponibile ศ™i alte comori de depanare, cum ar fi desfaceToate oferฤƒ funcศ›ionalitฤƒศ›i similare cu o sintaxฤƒ uศ™or diferitฤƒ. Depanarea gem-urilor nu ar trebui utilizatฤƒ รฎn producศ›ie, deoarece prezintฤƒ riscuri pentru aplicaศ›ia dvs. ศ™i o experienศ›ฤƒ negativฤƒ pentru utilizatori.

Fiศ™ierele jurnal pot fi inspectate pentru erori รฎn producศ›ie ศ™i gestionate รฎn consecinศ›ฤƒ. De asemenea, ar trebui sฤƒ urmaศ›i o abordare de dezvoltare bazatฤƒ pe teste (TDD) atunci cรขnd construiศ›i aplicaศ›ia pentru a vฤƒ asigura cฤƒ totul funcศ›ioneazฤƒ corect รฎnainte de implementarea รฎn producศ›ie.

รŽntrebฤƒri frecvente

Da. Rails continuฤƒ sฤƒ fie suport pentru GitHub, Shopify ศ™i Basecamp, iar versiunea 7 a adฤƒugat Hotwire, importul de hฤƒrศ›i ศ™i suport รฎncorporat pentru editorul Trix. Rฤƒmรขne o alegere puternicฤƒ pentru echipele care au nevoie de iterare rapidฤƒ cu convenศ›ii testate รฎn luptฤƒ.

Rails foloseศ™te Ruby, Django utilizeazฤƒ PythonAmbele sunt framework-uri MVC full-stack cu ORM-uri puternice. Rails se bazeazฤƒ pe convenศ›ii ศ™i generatoare de cod, รฎn timp ce Django oferฤƒ o interfaศ›ฤƒ de administrare ศ™i o configuraศ›ie explicitฤƒ mai strictฤƒ, pe care multe echipe o preferฤƒ pentru proiectele cu conศ›inut mare de date.

Cฤƒile de implementare comune includ Heroku, Render, Fly.io ศ™i AWS prin Capistrano sau Docker. Majoritatea echipelor precompileazฤƒ resursele cu rake assets:precompile, seteazฤƒ RAILS_ENV=production, ruleazฤƒ rails db:migrate ศ™i deservesc aplicaศ›ia รฎn spatele Puma plus Nginx sau un echilibrator de รฎncฤƒrcare gestionat.

Da. Asistenศ›ii AI pot construi schele de modele, pot sugera interogฤƒri ActiveRecord, pot redacta teste RSpec ศ™i pot revizui migrฤƒrile. Verificaศ›i รฎntotdeauna codul generat รฎn raport cu convenศ›iile Rails ศ™i รฎndrumฤƒrile de securitate รฎnainte de validare, รฎn special pentru autentificare ศ™i modificฤƒri ale bazei de date.

Aplicaศ›iile Rails apeleazฤƒ de obicei furnizori de inteligenศ›ฤƒ artificialฤƒ prin SDK-uri Ruby sau clienศ›i HTTP precum Faraday, stocheazฤƒ prompturi ศ™i rฤƒspunsuri รฎn modele ActiveRecord ศ™i pun รฎn coadฤƒ sarcini lungi cu Sidekiq. Gem-uri precum ruby-openai ศ™i langchainrb simplificฤƒ cablarea funcศ›iilor moderne de inteligenศ›ฤƒ artificialฤƒ.

Rezumaศ›i aceastฤƒ postare cu: