Guides.rubyonrails.org

Acest tutorial presupune că aveți cunoștințe de bază despre Rails după ce ați citit Ghidul de inițiere în Rails.

Acest ghid se bazează pe Rails 3.0. O parte din codul prezentat aici nu va funcționa în versiunile anterioare de Rails.

1 Bazele liniei de comandă

Există câteva comenzi care sunt absolut critice pentru utilizarea zilnică a Rails. În ordinea cât de mult le veți folosi probabil sunt:

  • rails console
  • rails server
  • rake
  • rails generate
  • rails dbconsole
  • rails new app_name

Să creăm o aplicație Rails simplă pentru a trece prin fiecare dintre aceste comenzi în context.

1.1 rails new

Primul lucru pe care vom dori să îl facem este să creăm o nouă aplicație Rails prin rularea comenzii rails new după instalarea Rails.

Puteți instala gemul rails tastând gem install rails, dacă nu îl aveți deja. Urmați instrucțiunile din Rails 3 Release Notes

$ rails new commandsapp create create README.rdoc create .gitignore create Rakefile create config.ru create Gemfile create app ... create tmp/cache create tmp/pids create vendor/plugins create vendor/plugins/.gitkeep

Rails vă va configura cu ceea ce pare a fi o cantitate imensă de lucruri pentru o comandă atât de mică! Aveți acum întreaga structură de directoare Rails cu tot codul de care aveți nevoie pentru a rula aplicația noastră simplă chiar din cutie.

1.2 rails server

Comanda rails server lansează un mic server web numit WEBrick care vine la pachet cu Ruby. Îl veți folosi de fiecare dată când veți dori să vă accesați aplicația printr-un browser web.

WEBrick nu este singura opțiune pentru a servi Rails. Vom ajunge la asta mai târziu.

Cu nici o altă lucrare, serverul rails va rula noua noastră aplicație Rails strălucitoare:

Cu doar trei comenzi am creat un server Rails care ascultă pe portul 3000. Mergeți în browserul dvs. și deschideți http://localhost:3000, veți vedea o aplicație Rails de bază care rulează.

Puteți folosi, de asemenea, aliasul „s” pentru a porni serverul: rails s.

Serverele pot fi rulate pe un alt port folosind opțiunea -p. Mediul de dezvoltare implicit poate fi schimbat folosind -e.

$ rails server -e production -p 4000

Opțiunea -b leagă Rails la ip-ul specificat, în mod implicit este 0.0.0.0.0. Puteți rula un server ca demon trecând o opțiune -d.

1.3 rails generate

Comanda rails generate folosește șabloane pentru a crea o mulțime de lucruri. Rularea de sine stătător a comenzii rails generate oferă o listă de generatoare disponibile:

De asemenea, puteți folosi aliasul „g” pentru a invoca comanda generator: rails g.

Puteți instala mai multe generatoare prin intermediul gemelor generatoare, porțiuni de plugin-uri pe care le veți instala fără îndoială, și puteți chiar să vă creați propriile generatoare!

Utilizarea generatoarelor vă va economisi o mare cantitate de timp prin scrierea de cod boilerplate, cod care este necesar pentru ca aplicația să funcționeze.

Să ne facem propriul controler cu generatorul de controler. Dar ce comandă ar trebui să folosim? Să întrebăm generatorul:

Toate utilitățile de consolă Rails au text de ajutor. Ca și în cazul majorității utilitarelor *nix, puteți încerca să adăugați –help sau -h la sfârșit, de exemplu rails server –help.

Generatorul de controlori așteaptă parametri sub forma generate controller ControllerName action1 action2. Haideți să facem un controler Greetings cu acțiunea hello, care ne va spune ceva drăguț.

$ rails generate controller Greetings hello create app/controllers/greetings_controller.rb route get "greetings/hello" invoke erb create app/views/greetings create app/views/greetings/hello.html.erb invoke test_unit create test/functional/greetings_controller_test.rb invoke helper create app/helpers/greetings_helper.rb invoke test_unit create test/unit/helpers/greetings_helper_test.rb invoke assets create app/assets/javascripts/greetings.js invoke css create app/assets/stylesheets/greetings.css

Ce a generat tot? S-a asigurat că o grămadă de directoare se află în aplicația noastră și a creat un fișier controler, un fișier de vizualizare, un fișier de test funcțional, un helper pentru vizualizare, un fișier javascript și un fișier de foaie de stil.

Verificați controlerul și modificați-l puțin (în app/controllers/greetings_controller.rb):

class GreetingsController < ApplicationController def hello @message = "Hello, how are you today?" endend

Apoi vizualizarea, pentru a afișa mesajul nostru (în app/views/greetings/hello.html.erb):

<h1>A Greeting for You!</h1><p><%= @message %></p>

Încărcați serverul folosind rails server.

$ rails server=> Booting WEBrick...

Asigurați-vă că nu aveți niciun fișier „tilde backup” în app/views/(controller), altfel WEBrick nu va afișa rezultatul așteptat. Aceasta pare a fi o eroare în Rails 2.3.0.

Url-ul va fi http://localhost:3000/greetings/hello.

Rails vine cu un generator și pentru modele de date.

Pentru o listă a tipurilor de câmpuri disponibile, consultați documentația API pentru metoda column pentru clasa TableDefinition.

Dar în loc să generăm direct un model (ceea ce vom face mai târziu), haideți să configurăm un scaffold. Un scaffold în Rails este un set complet de model, migrarea bazei de date pentru acel model, controler pentru a-l manipula, vizualizări pentru a vizualiza și manipula datele și o suită de teste pentru fiecare dintre cele de mai sus.

Vom configura o resursă simplă numită „HighScore” care va ține evidența celui mai mare scor la jocurile video pe care le jucăm.

Generatorul verifică dacă există directoare pentru modele, controlori, helper, layout-uri, teste funcționale și unitare, foi de stil, creează vizualizările, controlorii, modelele și migrarea bazei de date pentru HighScore (creând tabela și câmpurile high_scores), se ocupă de traseul pentru resursă și de teste noi pentru toate.

Migrarea necesită ca noi să migrăm, adică să rulăm niște cod Ruby (care trăiește în acel 20100209025147_create_high_scores.rb) pentru a modifica schema bazei noastre de date. Care bază de date? Baza de date sqlite3 pe care Rails o va crea pentru dvs. atunci când vom rula comanda rake db:migrate. Vom vorbi mai mult despre Rake în profunzime peste puțin timp.

Să vorbim despre testele unitare. Testele unitare sunt coduri care testează și face afirmații despre cod. În testele unitare, luăm o mică parte de cod, să spunem o metodă a unui model, și îi testăm intrările și ieșirile. Testele unitare sunt prietenii dumneavoastră. Cu cât te împaci mai repede cu faptul că calitatea vieții tale va crește drastic atunci când îți testezi codul unitar, cu atât mai bine. Serios. Vom face unul într-o clipă.

Să vedem interfața pe care Rails a creat-o pentru noi.

$ rails server

Vezi în browserul tău și deschide http://localhost:3000/high_scores, acum putem crea noi scoruri mari (55,160 la Space Invaders!)

1.4 consola rails

Comanda consola îți permite să interacționezi cu aplicația Rails din linia de comandă. Pe dedesubt, consola rails folosește IRB, așa că, dacă ați folosit-o vreodată, vă veți simți ca acasă. Acest lucru este util pentru a testa idei rapide cu cod și pentru a modifica date pe partea serverului fără a atinge site-ul web.

Puteți folosi, de asemenea, aliasul „c” pentru a invoca consola: rails c.

Dacă doriți să testați niște cod fără a modifica date, puteți face acest lucru invocând rails console –sandbox.

$ rails console --sandboxLoading development environment in sandbox (Rails 3.1.0)Any modifications you make will be rolled back on exitirb(main):001:0>

1.5 rails dbconsole

rails dbconsole își dă seama ce bază de date folosiți și vă plasează în orice interfață de linie de comandă pe care ați folosi-o cu ea (și își dă seama și de parametrii de linie de comandă pe care să îi dați!). Suportă MySQL, PostgreSQL, SQLite și SQLite3.

Puteți folosi, de asemenea, aliasul „db” pentru a invoca dbconsole: rails db.

1.6 rails plugin

Comanda rails plugin simplifică gestionarea plugin-urilor. Plugin-urile pot fi instalate după nume sau după URL-urile de depozit ale acestora. Trebuie să aveți Git instalat dacă doriți să instalați un plugin dintr-un repo Git. Același lucru este valabil și pentru Subversion.

$ rails plugin install https://github.com/technoweenie/acts_as_paranoid.git+ ./CHANGELOG+ ./MIT-LICENSE......

1.7 rails runner

runner rulează cod Ruby în contextul Rails în mod non-interactiv. De exemplu:

$ rails runner "Model.long_running_method"

Puteți folosi, de asemenea, aliasul „r” pentru a invoca runner-ul: rails r.

Puteți specifica mediul în care comanda runner trebuie să funcționeze folosind comutatorul -e.

$ rails runner -e staging "Model.long_running_method"

1.8 rails destroy

Gândiți-vă la destroy ca la opusul lui generate. Își va da seama ce a făcut generate și va anula.

Puteți folosi, de asemenea, aliasul „d” pentru a invoca comanda destroy: rails d.

2 Rake

Rake este Ruby Make, un utilitar Ruby de sine stătător care înlocuiește utilitarul Unix „make” și folosește un „Rakefile” și fișiere .rake pentru a construi o listă de sarcini. În Rails, Rake este folosit pentru sarcini de administrare comune, în special cele sofisticate care se construiesc unele pe altele.

Puteți obține o listă de sarcini Rake disponibile, care va depinde adesea de directorul curent, tastând rake –tasks. Fiecare sarcină are o descriere și ar trebui să vă ajute să găsiți lucrul de care aveți nevoie.

$ rake --tasks(in /home/foobar/commandsapp)rake db:abort_if_pending_migrations # Raises an error if there are pending migrationsrake db:charset # Retrieves the charset for the current environment's databaserake db:collation # Retrieves the collation for the current environment's databaserake db:create # Create the database defined in config/database.yml for the current Rails.env......rake tmp:pids:clear # Clears all files in tmp/pidsrake tmp:sessions:clear # Clears all files in tmp/sessionsrake tmp:sockets:clear # Clears all files in tmp/sockets

2.1 about

rake about oferă informații despre numerele de versiune pentru Ruby, RubyGems, Rails, subcomponentele Rails, dosarul aplicației dumneavoastră, numele mediului Rails curent, adaptorul bazei de date a aplicației dumneavoastră și versiunea schemei. Este util atunci când trebuie să cereți ajutor, să verificați dacă un patch de securitate v-ar putea afecta sau când aveți nevoie de niște statistici pentru o instalație Rails existentă.

2.2 assets

Puteți precompila asset-urile din app/assets folosind rake assets:precompile și elimina acele asset-uri compilate folosind rake assets:clean.

2.3 db

Cele mai frecvente sarcini ale aplicației db: Rake namespace sunt migrate și create, și va fi util să încercați toate sarcinile rake de migrare (up, down, redo, reset). rake db:version este util la depanare, spunându-vă versiunea curentă a bazei de date.

Mai multe informații despre migrări pot fi găsite în ghidul Migrations.

2.4 doc

Spațiul de nume doc: are instrumentele necesare pentru a genera documentație pentru aplicația dumneavoastră, documentație API, ghiduri. Documentația poate fi, de asemenea, eliminată, ceea ce este util în principal pentru a vă simplifica baza de cod, cum ar fi dacă scrieți o aplicație Rails pentru o platformă încorporată.

  • rake doc:app generează documentația pentru aplicația dumneavoastră în doc/app.
  • rake doc:guides generează ghiduri Rails în doc/guides.
  • rake doc:rails generează documentația API pentru Rails în doc/api.
  • rake doc:plugins generează documentația API pentru toate plugin-urile instalate în aplicație în doc/plugins.
  • rake doc:clobber_plugins elimină documentația generată pentru toate plugin-urile.

2.5 note

rake notes va căuta în codul dumneavoastră comentarii care încep cu FIXME, OPTIMIZE sau TODO. Căutarea se face în fișierele cu extensia .builder, .rb, .erb, .haml și .slim atât pentru adnotările implicite cât și pentru cele personalizate.

Dacă căutați o anumită adnotare, de exemplu FIXME, puteți folosi rake notes:fixme. Rețineți că trebuie să scrieți numele adnotării cu minusculă.

De asemenea, puteți utiliza adnotări personalizate în codul dvs. și le puteți lista folosind rake notes:custom, specificând adnotarea folosind o variabilă de mediu ANNOTATION.

$ rake notes:custom ANNOTATION=BUG(in /home/foobar/commandsapp)app/model/post.rb: * Have to fix this one before pushing!

Când folosiți adnotări specifice și adnotări personalizate, numele adnotării (FIXME, BUG etc.) nu este afișat în liniile de ieșire.

2.6 routes

rake routes va lista toate rutele definite de dumneavoastră, ceea ce este util pentru a depista problemele de rutare din aplicația dumneavoastră sau pentru a vă oferi o imagine de ansamblu bună a URL-urilor dintr-o aplicație cu care încercați să vă familiarizați.

2.7 test

O bună descriere a testării unitare în Rails este oferită în A Guide to Testing Rails Applications

Rails vine cu o suită de testare numită Test::Unit. Rails își datorează stabilitatea utilizării testelor. Sarcinile disponibile în namespace-ul test: ajută la rularea diferitelor teste pe care sperăm că le veți scrie.

2.8 tmp

She Rails.root/tmp este, la fel ca și directorul *nix /tmp, locul de păstrare a fișierelor temporare, cum ar fi sesiunile (dacă folosiți un depozit de fișiere pentru fișiere), fișierele de identificare a proceselor și acțiunile stocate în memoria cache.

Tașelele din namespace-ul tmp: vă vor ajuta să goliți directorul Rails.root/tmp:

2.9 Diverse

  • rake stats este grozav pentru a privi statisticile codului dumneavoastră, afișând lucruri cum ar fi KLOC-urile (mii de linii de cod) și raportul dintre cod și teste.
  • rake secret vă va oferi o cheie pseudo-aleatorie pe care să o folosiți pentru secretul sesiunii dumneavoastră.
  • rake time:zones:all listează toate fusurile orare pe care Rails le cunoaște.

3 Linia de comandă avansată Rails

Utilizarea mai avansată a liniei de comandă se concentrează în jurul găsirii de opțiuni utile (chiar surprinzătoare uneori) în utilități și adaptarea acestora la nevoile dumneavoastră și la fluxul de lucru specific. Aici sunt enumerate câteva trucuri din mâneca lui Rails.

3.1 Rails cu baze de date și SCM

Când creați o nouă aplicație Rails, aveți opțiunea de a specifica ce fel de bază de date și ce fel de sistem de gestionare a codului sursă va folosi aplicația dumneavoastră. Acest lucru vă va economisi câteva minute și, cu siguranță, multe apăsări de taste.

Să vedem ce vor face pentru noi opțiunea –git și opțiunea –database=postgresql:

A trebuit să creăm directorul gitapp și să inițializăm un depozit git gol înainte ca Rails să adauge fișierele pe care le-a creat în depozitul nostru. Să vedem ce a pus în configurația bazei noastre de date:

De asemenea, a generat câteva linii în configurația database.yml care corespund alegerii noastre de PostgreSQL pentru baza de date.

Singura capcană cu utilizarea opțiunilor SCM este că trebuie să faceți mai întâi directorul aplicației dumneavoastră, apoi să inițializați SCM-ul, apoi puteți rula comanda rails new pentru a genera baza aplicației dumneavoastră.

3.2 server cu diferite backend-uri

Mulți oameni au creat un număr mare de servere web diferite în Ruby, și multe dintre ele pot fi folosite pentru a rula Rails. Începând cu versiunea 2.3, Rails utilizează Rack pentru a servi paginile sale web, ceea ce înseamnă că poate fi utilizat orice server web care implementează un gestionar Rack. Acest lucru include WEBrick, Mongrel, Thin și Phusion Passenger (pentru a numi doar câteva!).

Pentru mai multe detalii despre integrarea Rack, consultați Rails on Rack.

Pentru a utiliza un alt server, trebuie doar să instalați gemul său, apoi să folosiți numele său ca prim parametru la rails server:

Feedback

Sunteți încurajați să contribuiți la îmbunătățirea calității acestui ghid.

Dacă vedeți greșeli de scriere sau erori factuale pe care sunteți încrezători să le remediați, vă rugăm să clonați depozitul rails și să deschideți o nouă cerere pull. Puteți, de asemenea, să cereți drepturi de comitere pe docrails dacă intenționați să trimiteți mai multe patch-uri. Trimiterile sunt revizuite, dar acest lucru se întâmplă după ce v-ați trimis contribuția. Acest depozit este fuzionat periodic cu master.

De asemenea, este posibil să găsiți conținut incomplet sau lucruri care nu sunt la zi. Vă rugăm să adăugați orice documentație lipsă pentru master. Verificați Ghidurile Ruby on Rails Guides Guidelines pentru stil și convenții.

Dacă, din orice motiv, găsiți ceva de reparat, dar nu îl puteți repara singur, vă rugăm să deschideți o problemă.

Și nu în ultimul rând, orice fel de discuție cu privire la documentația Ruby on Rails este foarte binevenită în lista de discuții rubyonrails-docs.

Lasă un răspuns

Adresa ta de email nu va fi publicată.