1 Acest ghid presupune
Acest ghid este destinat incepatorilor care vor sa creeze o aplicatie Rails de la zero. El nu necesita experienta anterioara in RoR, dar trebuie sa ai instalate pe calculator:
- Limbajul Ruby
- Pachetul RubyGems
- O versiune functionala a SQLite (de preferat), MySQL, sau PostgreSQL
Este recomandat sa te familiarizezi cu limbajul Ruby inainte de a aborda platforma Rails. Iti va fi cu mult mai usor sa urmaresti ce se intampla cu o aplicatie Rails daca intelegi sintaxa de baza Ruby. Rails nu te va ajuta prea mult la editarea aplicatiilor web daca nu ai experienta in limbajul pe care il utilizeaza. Exista cateva resurse bune, gratuite pe internet, pentru a invata Ruby, cum ar fi:
- Mr. Neighborly’s Humble Little Ruby Book
- Programming Ruby
- Why’s (Poignant) Guide to Ruby
2 Ce este Rails?
Rails este o platforma de dezvoltare a aplicatiilor web scrise in limbajul Ruby. Scopul ei declarat este dezvoltarea cat mai usoara a aplicatiilor web, urmand cateva principii generale cu privire la ceea ce orice developer are nevoie pentru a incepe. Cu alte cuvinte, iti permite sa scrii mai putin cod si sa obtii rezultate mai repede si mai eficient decat alte limbaje de programare si platforme.
Rails presupune ca exista intotdeauna o modalitate optima de a executa lucrurile si este creat pentru a incuraja acel mod – si in anumite cazuri pentru a descuraja alternativele. Daca inveti “Calea Rails”, probabil ca vei descoperi o crestere incredibila a eficientei. Daca persisti in a pastra obiceiuri vechi din alte limbaje de programare si vei incerca sa utilizezi modele invatate in alta parte, s-ar putea sa ai o experienta mai putin placuta.
Filozofia Rails include cateva principii generale:
- DRY (Don’t Repear Yourself - “Nu te repeta”) – sugereaza ca rescrierea aceluiasi cod de nenumarate ori este un lucru rau.
- Convention Over Configuration (Conventiile inaintea configuratiilor) – semnifica faptul ca Rails face presupuneri cu privire la ceea ce vrei sa faci si la modul de executie, in loc sa te lase de fiecare data sa te lovesti de fiecare detaliu prin fisiere nesfarsite de configurare.
- REST reprezinta cel mai bun model pentru aplicatii web – organizarea aplicatiilor in functie de resurse si de interogarile HTTP reprezinta cel mai rapid mod de implementare.
2.1 Arhitectura MVC
Rails este organizat pe arhitectura Model, View, Controller, denumita de obicei MVC. Beneficiile MVC includ:
- Izolarea logicii aplicatiei de interfata utilizatorului
- Usurinta mentinerii codului DRY
- Arata cu claritate unde isi au locul diverse tipuri de cod, pentru o intretinere mai usoara a aplicatiei.
2.1.1 Modele
Un model reprezinta informatia (datele) aplicatiei si regulile de manipulare a acesteia. In cazul Rails, un model este utilizat in principal pentru interactiunea cu tabelul corespunzator din baza de date. In majoritatea cazurilor, unui tabel din baza de date ii corespunde un model din aplicatie.
2.1.2 Views
Un view reprezinta interfata dintre utilizator si aplicatie. In Rails, view-urile sunt de obicei fisiere HTML continand cod Ruby imbricat, care se ocupa doar de afisarea datelor. In concluzie, view-urile au sarcina de a furniza date browserului web sau oricarei alte aplicatii care solicita informatii de la aplicatia ta.
2.1.3 Controlerele
Controlerele fac legatura dintre modele si view-uri. In Rails, controlerele sunt raspunzatoare de procesarea solicitarilor venite de la browserul web, de interogarea modelelor de date si de transmiterea acelor date catre view pentru a fi afisate.
2.2 Componentele Rails
Rails furnizeaza un pachet complet pentru crearea aplicatiilor web, inclusiv:
- Action Controller
- Action View
- Active Record
- Action Mailer
- Active Resource
- Railties
- Active Support
2.2.1 Action Controller
Action Controller reprezinta componenta care administreaza controlerele intr-o aplicatie Rails. Platforma Action Controller proceseaza solicitarile venite catre o aplicatie Rails, extrage parametrii si ii distribuie actiunii dorite. Serviciile furnizate de Action Controller includ administrarea sesiunilor, randarea template-urilor si administrarea redirectionarilor.
2.2.2 Action View
Action View administreaza view-urile aplicatiei. Poate genera in mod prestabilit formate HTML si XML. Action View administreaza randarea template-urilor, inclusiv template-uri imbricate si partiale si include suport pentru AJAX.
2.2.3 Active Record
Active Record reprezinta baza modelelor unei aplicatii Rails. Ofera independenta bazei de date, functionalitatea de baza CRUD, capacitati avansare de identificare si posibilitatea de a combina modelele intre ele sau cu alte servicii.
2.2.4 Action Mailer
Action Mailer reprezinta platforma pentru gestionarea serviciilor de e-mail. Poti utiliza Action Mailer pentru a trimite emailuri bazate pe template-uri flexibile sau poti receptiona si procesa mailurile primite.
2.2.5 Active Resource
Active Resource ofera platforma pentru administrarea conexiunilor dintre obiectele aplicatiei si serviciile web RESTful. Implementeaza un mod de reprezentare a resurselor web ca obiecte locale cu ajutorul semanticii CRUD.
2.2.6 Railties
Railties este codul de baza Rails care construieste noi aplicatii Rails si leaga diversele componente intre ele in orice aplicatie Rails.
2.2.7 Active Support
Active Support reprezinta o colectie extinsa de clase utilitare si extensii ale librariilor standard Ruby, care sunt utilizate atat de codul de baza, cat si de aplicatiile tale.
2.3 Arhitectura REST
REST (Representational state transfer) este un model de arhitectura software pentru resurse distribuite, cum este internetul.
In sensul cel mai strict, REST reprezinta o colectie de principii pentru arhitectura unei retele, ce definesc modalitatile de creare si adresare a resurselor. Termenul este utilizat si pentru a descrie orice interfata simpla ce transmite date prin protocolul HTTP, fara a utiliza protocoale aditionale (SOAP), sesiuni sau cookie-uri HTTP.
REST ofera doua elemente principale:
Utilizarea unor identificatori pentru resurse (care, in scopul discutiei, pot fi priviti ca URL-uri)
- Transferul starii resurselor intre componentele sistemului.
De exemplu, pentru o aplicatie Rails, o solicitare de genul:
va fi interpretata ca o referinta la o resursa foto cu ID-ul 17, pentru a indica o actiune dorita – stergerea respectivei resurse.
Daca doresti sa afli mai multe detalii despre arhitectura REST, aceste resurse sunt destul de abordabile:
A Brief Introduction to REST de Stefan Tilkov
- An Introduction to REST (tutorial video) de Joe Gregorio
- Representational State Transfer articol in Wikipedia
- How to GET a Cup of Coffee de Jim Webber, Savas Parastatidis & Ian Robinson
3 Crearea unui nou proiect Rails
Urmand acest ghid, vei crea un proiect Rails denumit blog care reprezinta de fapt un blog web (foarte) simplu. Inainte de a incepe constructia aplicatiei, trebuie sa te asiguri ca ai instalat Rails.
3.1 Instalarea Rails
Despre instalarea Ruby, MySQL si a platformei Rails poti citi in acest tutorial.
Daca lucrezi cu Windows, ti-ar fi mai usor sa instalezi Instant Rails. Ai grija, totusi, deoarece versiunile Instant Rails au tendinta de a fi serios in urma actualelor versiuni Rails. De asemenea, vei observa ca varianta Rails pentru Windows este de obicei mai putin placuta decat pe alte sisteme de operare. Daca se poate, iti sugeram sa instalezi o masina virtuala Linux pentru a o putea utiliza la dezvoltarile Rails.
- Daca vrei sa tii pasul cu schimbarile avangardiste din Rails, ar trebui sa clonezi codul sursa Rails de pe github. Aceasta nu este, totusi, o optiune recomandata incepatorilor.
3.2 Crearea unei aplicatii Blog
Deschide o fereastra de comenzi, acceseaza un director in care ai dreptul de a crea fisiere si tasteaza:
Aceasta va crea o aplicatie Rails care utilizeaza baza de date SQLite pentru stocarea datelor. Daca preferi sa utilizezi MySQL, executa aceasta comanda:
Si daca utilizezi PostgreSQL pentru stocarea datelor, executa aceasta comanda:
$ rails blog -d postgresql
SFAT. Poti observa toate optiunile pentru comanda rails daca rulezi rails -h.
Dupa ce ai creat aplicatia blog, schimba calea in directorul corespunzator, pentru a lucra direct in respectiva aplicatie.
In orice caz, Rails va crea un director denumit blog. Deschide acel director si exploreaza-i continutul. Cea mai mare parte a activitatii din acest tutorial va avea loc in app/ folder, dar ceea ce trebuie sa retii este ca fiecare director din proiectul tau are un scop bine stabilit.
Fisier/Director |
Scop |
README |
Acesta este un mic manual cu instructiuni pentru aplicatia ta. Utilizeaza-l pentru a-I informa pe ceilalti cu privire la rolul aplicatiei, cum se poate seta si asa mai departe. |
Rakefile |
Acest fisier contine procese batch care pot fi rulate de catre terminal. |
app/ |
Contine controllerele, modelele si view-urile aplicatiei tale. In continuare, te vei concentra asupra acestui director. |
config/ |
Configureaza regulile de rulare, caile, baza de date si multe altele. |
db/ |
Prezinta schema bazei de date actuale, precum si migratiile din baza de date. Vei invata in curand despre migratii. |
doc/ |
Documentatia detaliata a aplicatiei tale. |
lib/ |
Module extinse pentru aplicatia ta (nu sunt cuprinse in prezentul ghid). |
log/ |
Fisierele log ale aplicatiei. |
public/ |
Singurul director care poate fi accesat de catre utilizatori. Aici se afla imaginile, codul javascript si CSS, alte fisiere statice. |
script/ |
Scripturile furnizate de Rails pentru a executa task-uri cum ar fi instalarea de plugin-uri, pornirea consolei sau a serverului web, etc. |
test/ |
Teste unitare, reparatii si alte dispozitive de testare. |
tmp/ |
Fisiere temporare |
vendor/ |
Intr-o aplicatie tipica Rails, acesta director include Ruby Gems, codul sursa Rails (daca il instalezi in proiectul tau) si plugin-uri cu functionalitati aditionale preinstalate. |
3.3 Configurarea unei baze de date
Orice aplicatie Rails va interactiona cu o baza de date. Baza de date utilizata este specificata in fisierul de configuratie, config/database.yml. Daca deschizi fisierul dintr-o noua aplicatie Rails, vei observa o configuratie prestabilita a bazei de date utilizand SQLite. Fisierul contine sectiuni pentru trei medii diferite in care Rails poate fi rulat in mod prestabilit::
Modul development (dezvoltare) este utilizat pe computerul pe care este implementata aplicatia.
- Modul test este utilizat pentru a rula teste automate.
- Modul production (productie) este utilizat atunci cand iti lansezi aplicatia pentru a fi utilizata de public.
3.3.1 Configurarea unei baze de date SQLite
Platforma Rails are suport incorporat pentru SQLite, care este o aplicatie de baze de date ce nu necesita un server. Desi un mediu de productie ocupat poate supraincarca SQLite, aceasta varianta este recomandata pentru etapele de dezvoltare si testare. La crearea unui proiect nou, Rails utilizeaza in mod prestabilit o baza de date SQLite, dar aceasta poate fi schimbata oricand mai tarziu.
Aici se afla sectiunea din fisierul de configurare prestabilit, avand setata conexiunea pentru modul de dezvoltare:
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
Daca nu ai nicio baza de date stabilita, SQLite este cea mai usor de instalat. Daca lucrezi pe Mac cu un sistem de operare OS X 10.5 sau mai nou, atunci SQLite este deja instalat. Daca nu, se poate instala utilizand RubyGems:
$ gem install sqlite3-ruby
3.3.2 Configurarea unei baze de date MySQL
Daca preferi sa utilizezi MySQL, config/database.yml va arata putin diferit. Iata un exemplu:
development:
adapter: mysql
encoding: utf8
database: blog_development
pool: 5
username: root
password:
socket: /tmp/mysql.sock
Daca la instalarea MySQL pe computerul utilizat pentru dezvoltare ai definit un utilizator root si ai lasat gol campul de parola, aceasta configuratie s-ar putea sa functioneze. Daca nu, schimba numele de utilizator si parola cu cele utilizate de serverul MySQL.
3.3.3 Configurarea bazei de date PostgreSQL
Daca utilizezi PostgreSQL, config/database.yml va fi setat in modul urmator:
development:
adapter: postgresql
encoding: unicode
database: blog_development
pool: 5
username: blog
password:
Daca este necesar, poti schimba numele de utilizator si parola din sectiunea development.
3.4 Crearea bazei de date
Acum ca ai configurat username-ul si parola, poti crea o baza de date goala. Pentru aceasta, asigura-te ca te afli in directorul blog, apoi executa comanda rake:
Rake este o comanda de uz general, folosita de Rails in multe scopuri. Poti observa lista optiunilor disponibile daca rulezi rake -T.
Aici se incheie prima parte a acestui tutorial. In cea de-a doua parte vei putea citi mai multe despre controllere, view-uri, modele si scaffolding.
|