5 caracteristici minunate noi Rails 3

După mai mult de un an de dezvoltare, Ruby on Rails 3 a fost lansat oficial publicului cu câteva săptămâni în urmă. Mai mult decât o actualizare iterativă, această versiune extrem de anticipată a fost o refactorizare majoră a cadrului Ruby popular. Continuați să citiți pentru a afla cinci dintre cele mai minunate caracteristici noi din Ruby Rails 3.


1. JavaScript discret

Unul dintre noile mele caracteristici preferate Ruby on Rails 3 este introducerea JavaScript-ului Unobtrusive (UJS) în toate funcțiile JavaScript helper. În versiunile anterioare de Rails, JavaScript a fost generat în linie cu HTML, provocând un cod urât și oarecum fragil.

Ca un exemplu, Rails vă permite să utilizați link_to metoda pentru a genera o legătură de ștergere pentru un obiect.

 <%= link_to "Delete this Post", @post, :confirm => "Chiar doriți să ștergeți această postare?",: Method =>: delete%>

Utilizarea acestei metode în opinia dvs. ar genera următoarele în Rails 2:

 Ștergeți această postare

Rails 3 ar genera ceva mult mai simplu:

 Ștergeți această postare

Rails 3 înlocuiește întregul JavaScript inline cu câteva atribute HTML5. Toți manipulatorii de evenimente JavaScript care se ocupă de caseta actuală de confirmare și ștergerea sunt stocați într-un singur fișier JavaScript central care este inclus în fiecare proiect de șine.

Un mare avantaj al acestei metode noi este faptul că asistenții JavaScript sunt agnostic-cadru. În loc să fii legat de biblioteca Prototype ca și cum ai fi în Rails 2, poți acum să alegi orice cadru JavaScript care iti place (aplicațiile Rails vin cu Prototype în mod implicit, dar jQuery este acum oficial suportat.


2. Securitate îmbunătățită

O altă caracteristică minunată a Rails 3 este că protecția XSS este activată în mod implicit. Rails 2 a protejat XSS de protecție prin utilizarea h metodă.

 <%= h @comment.text %>

h metoda ar scăpa html și JavaScript pentru a se asigura că nu a fost executat niciun cod malware de pe partea clientului. Această metodă a funcționat foarte bine, dar a existat o problemă: a trebuit să vă amintiți efectiv să folosiți h metodă oriunde a fost afișată intrarea introdusă de utilizator. Dacă ai uitat chiar și un singur loc, atunci ai fost vulnerabil la un atac XSS.

În Rails 3, toate intrările sunt scoase în mod implicit, luând sarcina off de dezvoltator de a avea să vă amintiți să scape oriunde ar putea fi prezent codul rău intenționat. Pentru acele momente pe care doriți să le permiteți să apară în vizualizarea dvs. date nesolicitate, puteți utiliza funcția brut metoda de a spune Rails 3 să nu scape de date.

 <%= raw @comment.text %>

3. Motor de interogare nou

Rails 3 include un motor de interogare nou, care vă permite să obțineți mai repede datele dorite și vă oferă mai multă flexibilitate în codul de comandă. Aceste modificări apar în diverse locuri, dar cel mai frecvent caz este preluarea datelor în controlorul dvs. În Rails 2, puteți utiliza metoda de căutare pentru a prelua datele pe care le căutați, trecând în argumente pentru a specifica condițiile, gruparea, limitele și orice alte informații de interogare. De exemplu:

 @posts = Post.find (: toate,: condiții => ["categoria IN (?)", categorii],: limit => 10,: order => "created_on DESC")

găsește primele zece postări din anumite categorii specificate ordonate după timpul de creare.

În Rails 3, fiecare dintre parametrii parcurși are o metodă proprie, care poate fi înlănțuită împreună pentru a obține aceleași rezultate.

 @posts = Post.where (["categoria IN (?)", categorii]). comanda ("created_on DESC"

Interogarea nu este executată până când datele sunt necesare; astfel încât aceste metode pot fi chiar utilizate în mai multe declarații.

 @posts = Post.where (["category IN (?)", categorii]) dacă (condition_a) @posts = @posts.where (['approved =?', true]) else @posts = @ posts.where ['aprobat =?', false]) sfârșit

Acesta este doar un exemplu simplu, dar ar trebui să vă ofere o idee despre unele dintre modalitățile în care această sintaxă nouă poate fi mai utilă.


4. E-mail mai ușor

Modulul ActionMailer a fost rescris pentru a face mult mai ușor pentru aplicația dvs. să trimită un e-mail în Rails 3. Există destul de multe schimbări, dar aici sunt câteva dintre preferatele mele.

1. Setări implicite

În Rails, un mailer este o clasă care poate avea mai multe metode, fiecare dintre ele configurarea și trimiterea unui e-mail în general. Anterior, a trebuit să setați toți parametrii pentru fiecare e-mail separat în fiecare metodă.

 clasa UserMailer < ActionMailer::Base def welcome_email(user) from "[email protected]" # other paramters end def password_reset(user) from "[email protected]" # other parameters end end

În Rails 3, puteți specifica valorile implicite care pot fi eventual suprascrise în fiecare metodă.

 clasa UserMailer < ActionMailer::Base default :from => '[email protected]',: return_path => '[email protected]' def welcome_email (utilizator) # nu este nevoie să specificați din capătul sfârșitului parametrului

2. API curate

Versiunile anterioare ale Rails ți-au cerut să trimiți poștă electronică folosind metode speciale create dinamic de către ActionMailer. De exemplu, dacă doriți să trimiteți e-mailul de bun venit în exemplul de mai sus, va trebui să apelați:

 UserMailer.deliver_welcome_email (@user)

În Rails 3, poți să suni

 UserMailer.welcome_email (@user) .deliver

Acest lucru are mai mult sens semantic, și în plus vă permite să preluați și să manipulați Poștă obiect înainte de a trimite e-mailul.


5. Managementul dependenței

Unul dintre punctele forte ale cadrului Ruby on Rails este multitudinea de pietre disponibile pentru dezvoltatorii. Fie că este vorba despre autentificarea, manipularea tranzacțiilor financiare, manipularea încărcărilor de fișiere, sau aproape orice altceva, șansele sunt o bijuterie care există pentru a vă ajuta în rezolvarea problemei dvs..

Problemele pot apărea, totuși, dacă pietrele dvs. au nevoie de alte pietre sau dezvoltatorii se află în medii diferite, printre altele. Pentru a vă ajuta să rezolvați aceste tipuri de situații, Rails 3 adaugă bijuteria Bundler pentru a vă ajuta să vă gestionați dependențele. Utilizarea Bundler în Rails 3 este extrem de simplă; adăugați o linie pentru fiecare bijuterie pe care o solicitați în fișierul Gem, un fișier inclus în rădăcina fiecărei aplicații.

 gem "authlogic"

Odată ce ați inclus toate pietrele dvs., rulați:

 instalare pachet

iar Bundler va descărca și configura toate pietrele prețioase și dependențele de care aveți nevoie pentru proiect.

Bundler vă permite, de asemenea, să specificați anumite pietre care pot fi configurate numai în anumite medii (dezvoltare vs. producție vs. testare).

Acestea sunt doar câteva dintre numeroasele modificări incluse în Ruby on Rails 3. Multe dintre API-urile vechi încă lucrează în Rails, chiar dacă au fost depreciate, pentru a facilita actualizarea. Deci, dacă sunteți în gard pentru a vă îmbunătăți sau nu actuala aplicație pentru șine, atunci mergeți la ea!

Vă mulțumim pentru lectură!

Cod