Introducere in Rails
26.06.2009
Acest ghid a fost creat pentru Rails 2.3. Unele dintre exemplele prezentate in continuare nu vor functiona pe versiunile anterioare ale Rails.
2213 afisari 2 Rating (4 voturi) 35 min

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:

DELETE /photos/17

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:

$ rails blog

Aceasta va crea o aplicatie Rails care utilizeaza baza de date SQLite pentru stocarea datelor. Daca preferi sa utilizezi MySQL, executa aceasta comanda:

$ rails blog -d mysql

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.

$ cd blog

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 db:create

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.

Copyright © 2008-2010 E-LEARN.ro. Toate drepturile rezervate. Conceput si realizat de Neokinetics Software.