Sintaksa rubin na šinama. Uvod u Ruby on Rails. Ruby on Rails razvoj od strane Zlih Marsovaca

Ovaj vodič pokriva instalaciju i pokretanje Ruby on Rails.

Nakon što ga pročitate, znaćete:

  • Kako instalirati Rails, kreirati novu Rails aplikaciju i povezati vašu aplikaciju sa bazom podataka.
  • Opća struktura Rails aplikacije.
  • Osnovni principi MVC (Model, View Controller - "Model-View-Controller") i dizajn zasnovan na RESTful-u.
  • Kako brzo generirati početni Rails kod aplikacije.

Pretpostavke u ovom vodiču

Ovaj vodič je za početnike koji žele pokrenuti Rails aplikaciju od nule. Ne pretpostavlja se da ste ranije radili sa Rails-om.

Rails je okvir za web razvoj napisan u programskom jeziku Ruby. Ako nemate Ruby iskustva, možda će vam biti teško da odmah počnete učiti Rails. Postoji nekoliko dobrih izvora na engleskom jeziku posvećenih učenju Rubyja, na primjer:

Imajte na umu da neki od resursa, iako su još uvijek odlični, još uvijek pokrivaju starije verzije Ruby-ja, posebno 1.6 i 1.8, i ne uključuju neke od sintakse koju ćete vidjeti u svakodnevnom razvoju Railsa.

Šta je Rails?

Rails je okvir za web razvoj napisan u programskom jeziku Ruby. Dizajniran je da olakša programiranje web aplikacija tako što će napraviti niz pretpostavki o tome šta je svakom programeru potrebno za kreiranje novog projekta. Omogućava vam da pišete manje koda tokom programiranja u poređenju sa drugim jezicima i okvirima. Profesionalni programeri na Rails-u također primjećuju da to čini razvoj web aplikacija zabavnijim =)

Rails je majstorski komad softvera. Pretpostavlja da postoji "najbolji" način da se nešto uradi, i osmišljen je da ohrabruje na taj način - au nekim slučajevima čak i obeshrabruje alternative. Ako proučavate "The Rails Way", možda ćete otkriti značajno povećanje produktivnosti u sebi. Ako ustrajete i unesete stare navike iz drugih jezika u razvoj Railsa i pokušate koristiti obrasce naučene negdje drugdje, vaše razvojno iskustvo će biti manje nego sretno.

Filozofija Railsa uključuje dva važna vodeći principa:

  • Nemojte se ponavljati: DRY je princip softverskog inženjeringa koji kaže da "Svaka informacija treba da ima jednu, ne-suvišnu, autoritativnu reprezentaciju u sistemu." Nemojte pisati iste informacije iznova i iznova, kod će biti lakši za održavanje, proširiviji i manje bugiti.
  • Konvencija o konfiguraciji: Rails ima mišljenja o najboljem načinu da se uradi mnogo stvari u web aplikaciji i podrazumevano koristi ove konvencije umesto da vas prisiljava da fino podešavate više konfiguracionih fajlova.

Kreiranje novog projekta Rails

Najbolji način da koristite ovaj vodič je da ga prođete korak po korak. Svi koraci su neophodni za pokretanje primjera aplikacije i nisu potrebni dodatni kod ili koraci.

Prateći ovaj vodič, kreirat ćete Rails projekat pod nazivom blog, vrlo jednostavan web blog. Prije nego počnemo graditi aplikaciju, moramo se uvjeriti da je sam Rails instaliran.

Sljedeći primjeri koriste $ za označavanje terminalne ulazne linije u UNIX-u operativni sistemi ah, iako bi se moglo drugačije konfigurirati. Ako koristite Windows, linija će izgledati otprilike kao c:\source_code>

3.1. Instaliranje šina

Prije instaliranja Railsa, morate biti sigurni da imate instalirane potrebne preduslove na vašem sistemu. To uključuje Ruby i SQLite3.

Otvorite aplikacije za komandna linija. Na macOS-u otvorite Terminal.app, na Windowsu odaberite "Run" iz Start menija i upišite "cmd.exe". Sve naredbe koje počinju sa znakom dolara $ moraju se pokrenuti na komandnoj liniji. Provjerite imate li instaliranu trenutnu verziju Ruby-a:

$ ruby ​​-v ruby ​​2.5.0

Rails zahtijeva Ruby verziju 2.5.0 ili noviju za instaliranje. Ako je broj verzije manji od ovog, morat ćete instalirati novu kopiju Ruby-a.

Da brzo instalirate Ruby i Ruby on Rails na svoj sistem, Windows korisnici može koristiti Rails Installer. Dodatne metode instalacije za većinu operativnih sistema mogu se vidjeti na ruby-lang.org.

Ako koristite Windows, morat ćete instalirati Ruby Installer Development Kit.

Također ćete morati instalirati SQLite3 bazu podataka.

Mnogi popularni operativni sistemi slični UNIX-u isporučuju se sa prihvatljivom verzijom SQLite3. Na Windows-u, ako ste instalirali Rails koristeći Rails Installer, već imate instaliran SQLite. Drugi korisnici mogu pogledati upute za instalaciju na SQLite3 stranici. Provjerite da li je ispravno instaliran i na vašem PATH:

$ sqlite3 --verzija

Program bi trebao prijaviti svoju verziju.

Da instalirate Rails, koristite naredbu gem install koju daje RubyGems:

$ gem instalacijske šine

Da biste provjerili da li je sve ispravno instalirano, potrebno je učiniti sljedeće:

$ rails --verzija

Ako se prikaže nešto poput "Rails 6.0.0", možete nastaviti.

3.2. Kreiranje aplikacije za blog

Rails dolazi sa brojnim skriptama, koje se nazivaju generatori, dizajnirane da olakšaju život programeru stvaranjem svega što im je potrebno da započnu sa određenim zadatkom. Jedan od njih je novi generator aplikacija, koji vam daje osnovu za Rails aplikaciju tako da ne morate sami da je pišete.

Da biste koristili ovaj generator, otvorite terminal, idite do mape u kojoj imate dozvolu za kreiranje datoteka i napišite:

$ rails novi blog

Ovo će kreirati Rails aplikaciju pod nazivom Blog u direktoriju bloga i instalirati dragulje čije se ovisnosti spominju u Gemfileu kada se koristi instalacija paketa.

At koristeći Windows Podsistem za Linux, postoje neka ograničenja za poruke sistem podataka da onemogućite spring i slušate dragulje, što se može uraditi pokretanjem railsa new blog --skip-spring --skip-listen .

Možete vidjeti sve moguće opcije komandne linije koje Rails graditelj aplikacija prihvata pokretanjem rails new -h .

Nakon što kreirate aplikaciju za blog, idite na njen folder:

Direktorij bloga sadrži nekoliko automatski generiranih datoteka i mapa koje definiraju strukturu Rails aplikacije. Većina posla u ovom vodiču će se odvijati u folderu aplikacije, ali za sada, prođimo kroz funkcije svake mape koju Rails kreira u novoj zadanoj aplikaciji:

Fajl/Folder Svrha
aplikacija/ Sadrži kontrolere, modele, poglede, pomoćnike, mailere, kanale, poslove i sredstva vaše aplikacije. Kasnije ćemo detaljnije pogledati ovaj folder.
kanta/ Sadrži Rails skripte koje pokreću vašu aplikaciju, a direktorij također može sadržavati druge skripte koje koristite za konfiguriranje, ažuriranje, implementaciju ili pokretanje.
konfiguracija/ Konfiguracije ruta, baze podataka vaše aplikacije itd. Ovo je detaljnije pokriveno u Konfiguraciji Rails aplikacija.
config.ru Konfiguracija stalka za servere zasnovane na racku koji se koriste za pokretanje aplikacije. Za više informacija o Racku, pogledajte web stranicu Rack.
db/ Sadrži trenutnu šemu vaše baze podataka, kao i migracije baze podataka.
gemfile
Gemfile.lock
Ove datoteke vam omogućavaju da odredite koje su gem zavisnosti potrebne vašoj Rails aplikaciji. Ove datoteke koristi dragulj Bundler. Za više informacija o Bundleru, pogledajte Bundler stranicu.
lib/ Eksterni moduli za vašu aplikaciju.
log/ Dnevnici aplikacije.
package.json Ovaj fajl vam omogućava da odredite koje su npm zavisnosti potrebne za vašu Rails aplikaciju. Ovu datoteku koristi Yarn. Za više informacija o Yarn-u pogledajte web stranicu Yarn.
javno/ Jedina fascikla kojoj je moguće pristupiti izvana. Sadrži statičke datoteke i kompajlirane imovine.
Rakefile Ova datoteka pronalazi i učitava zadatke koji se mogu pokrenuti na komandnoj liniji. Definirani zadatak je dostupan u svim Rails komponentama. Umjesto da mijenjate Rakefile , možete dodati svoje vlastite zadatke dodavanjem datoteka u direktorij aplikacije lib/tasks.
README.md Ovo je uvodni priručnik za vašu aplikaciju. Trebalo bi ga urediti kako biste drugima rekli šta vaša aplikacija radi, kako je postaviti i tako dalje.
skladište/ Datoteke Active Storage za uslugu Disk. Ovo je pokriveno u vodiču za pregled aktivne memorije.
test/ Jedinični testovi, uređaji i drugi aparati za testiranje. Ovo je pokriveno u vodiču Testing Rails Applications.
tmp/ Privremeni fajlovi (kao što su keš i pid fajlovi)
prodavac/ Mjesto za kod treće strane. U tipičnoj Rails aplikaciji, uključuje eksterne dragulje.
.gitignore Ova datoteka govori git-u koje datoteke (eksplicitne ili zamjenske znakove) treba zanemariti. Pogledajte GitHub - Ignorisanje datoteka za više informacija o ignoriranju datoteka.
.ruby-version Ovaj fajl sadrži podrazumevanu verziju Ruby-a.

Hello Rails!

Prvo, prikažimo tekst na ekranu. Ovo zahtijeva pokrenuti server za vašu Rails aplikaciju.

4.1. Pokretanje web servera

U stvari, već imate funkcionalnu Rails aplikaciju. Da biste bili sigurni, morate pokrenuti web server na svom stroju. Ovo se može učiniti pokretanjem sljedeće naredbe iz direktorija bloga:

Ako koristite Windows, morate proslijediti skripte iz mape bin direktno u Ruby interpreter, tj. ruby ​​bin\rails server.

Kompresija JavaScript sredstava zahtijeva JavaScript okruženje za izvršavanje na vašem sistemu, a njegovo odsustvo će rezultirati greškom execjs tokom kompresije sredstava. Obično macOS i Windows dolaze s instaliranim JavaScript runtime-om. therubyrhino je preporučeno vrijeme izvođenja za JRuby korisnike i dodaje se u Gemfile ako je aplikacija generirana za JRuby. Možete naučiti sve o podržanim runtimeima u ExecJS

Ovo će pokrenuti Puma, web server distribuiran sa Railsom po defaultu. Da vidite aplikaciju u akciji, otvorite prozor pretraživača i idite na http://localhost:3000. Trebali biste vidjeti zadanu Rails info stranicu:

Da biste zaustavili web server, pritisnite Ctrl+C na terminalu na kojem je pokrenut. Da biste potvrdili da je server zaustavljen, trebali biste ponovo vidjeti kursor komandne linije. Za većinu sistema sličnih UNIX-u, uključujući macOS, ovo će biti znak dolara $. U razvojnom modu, Rails generalno ne zahteva da zaustavite server; server automatski preuzima sve promjene koje napravite na fajlovima.

Stranica "Dobrodošli na brod" je poput testa za novu Rails aplikaciju: pokazuje da su vaši programi dovoljno pravilno podešeni da prikažu stranicu.

4.2. Pozdravi, Rails

Da bi Rails rekao "Bok", morate barem kreirati kontroler i pogled(reprezentacija).

Svrha kontrolora je primanje specifičnih zahtjeva aplikaciji. Routing odlučuje koji će kontrolor primati koje zahtjeve. Često postoji više od jedne rute do svakog kontrolera, a različite rute se mogu rukovati različito. akcione igre. Svrha svake radnje je prikupljanje informacija kako bi ih pružili pregledu.

Svrha prikaza je da prikaže ove informacije u formatu čitljivom za ljude. Važna razlika koju treba napraviti je da je mjesto gdje se informacije prikupljaju kontroler, ne pogled. Prikaz bi trebao prikazati samo ove informacije. Podrazumevano, predlošci pogleda su napisani na jeziku koji se zove eRuby (Embedded Ruby), koji se konvertuje u petlji zahteva u Rails-u pre nego što se pošalje korisniku.

Da biste kreirali novi kontroler, trebate pokrenuti generator "kontrolera" i reći mu da želite kontroler pod nazivom "Dobrodošli" sa akcijom pod nazivom "indeks", poput ove:

$ rails generiše indeks dobrodošlice kontrolera

Rails će kreirati neke datoteke i rutu.

Kreirajte app/controllers/welcome_controller.rb rutu dobiti "welcome/index" pozovite erb kreirajte aplikaciju/views/welcome kreirajte app/views/welcome/index.html.erb pozovite test_unit kreirajte test/controllers/welcome_controller_test.rb pozovite pomoćnik kreirajte aplikaciju/ helpers/welcome_helper.rb pozvati test_unit pozvati sredstva pozvati scss kreirati aplikaciju/assets/stylesheets/welcome.scss

Najvažniji od njih su, naravno, kontroler koji se nalazi na app/controllers/welcome_controller.rb i pogled koji se nalazi na app/views/welcome/index.html.erb.

Otvorite datoteku app/views/welcome/index.html.erb u uređivaču teksta. Izbrišite sav postojeći kod u datoteci i zamijenite ga sljedećim redom koda:

Ako ponovo pošaljete obrazac, vidjet ćete nešto poput sljedećeg:

"Prvi članak!", "text"=>"Ovo je moj prvi članak.") dozvoljeno: false>

Ova radnja sada prikazuje opcije za članak koji je došao iz obrasca. Međutim, i dalje je beskorisno. Da, vidite parametre, ali zapravo ne radite ništa s njima.

5.4. Kreiranje modela članka

Modeli u Rails-u koriste ime u jednini, a njihova odgovarajuća tabela u bazi podataka koristi naziv u množini. Rails pruža generator modela koji većina Rails programera koristi za kreiranje novih modela. Da kreirate novi model, pokrenite ovu naredbu u svom terminalu:

$ rails generiše model Naslov članka:string tekst:tekst

Ovom komandom kažemo Rails-u da želimo model članka sa atributom naslov tip stringa i atribut tekst tip teksta. Ovi atributi se automatski dodaju u tabelu članaka i vezuju za model članka.

Rails će kreirati niz datoteka kao odgovor. Trenutno nas zanimaju samo app/models/article.rb i db/migrate/20140120191729_create_articles.rb (vaše ime može biti malo drugačije). Potonji je odgovoran za kreiranje strukture baze podataka, zbog čega ćemo je dalje razmotriti.

Active Record je dovoljno pametan da automatski poveže imena kolona sa atributima modela, što znači da ne morate deklarisati atribute unutar Rails modela, Active Record to radi automatski.

5.5. Pokretanje migracije

Kao što ste vidjeli, šine generiraju model kreiran u fajlu migracije baze podataka u direktoriju db/migrate. Migracije su Ruby klasa dizajnirana da olakša kreiranje i modificiranje tabela baze podataka. Rails koristi komande rake za pokretanje migracija, a moguće je poništiti migraciju nakon što je primijenjena na vašu bazu podataka. Ime datoteke za migraciju uključuje vremensku oznaku kako biste bili sigurni da se izvršavaju redoslijedom kojim su kreirani.

Ako pogledate datoteku db/migrate/YYYYMMDDHHMMSS_create_articles.rb (zapamtite, vaš fajl ima malo drugačiji naziv), evo šta ćete pronaći:

Class CreateArticles< ActiveRecord::Migration def change create_table:articles do |t| t.string:title t.text:text t.timestamps end end end

Ova migracija stvara metodu promjene koja se poziva kada se ova migracija pokrene. Akcija definirana u ovoj migraciji je također reverzibilna, što znači da Rails zna kako da poništi promjene napravljene ovom migracijom u slučaju da ih kasnije odlučite poništiti. Kada pokrenete ovu migraciju, kreirat će se tabela članaka sa stupcem niza i stupcem teksta. Također će kreirati dva polja vremenske oznake kako biste pratili kada je članak kreiran i ažuriran.

Sada trebamo koristiti naredbu rails da pokrenemo migraciju:

$ rails db:migrate

Rails će pokrenuti ovu naredbu migracije i izvestiti da je kreirala tabelu Članci.

CreateArticles: migracija ================================================ = -- create_table(:articles) -> 0,0019s == CreateArticles: migrirano (0,0020s) ============================ == ============

Budući da po defaultu radite u razvojnom okruženju, ova komanda će se primijeniti na bazu podataka definiranu u razvojnom dijelu vaše config/database.yml datoteke. Ako želite pokrenuti migracije u drugom okruženju, kao što je proizvodnja, morate ih eksplicitno proslijediti kada pozovete naredbu: rails db:migrate RAILS_ENV=production .

5.6. Pohranjivanje podataka u kontroler

Da se vratimo na ArticlesController, moramo modificirati akciju kreiranja kako bismo koristili novi model članka za spremanje podataka u bazu podataka. Otvorite app/controllers/articles_controller.rb i modificirajte akciju kreiranja na sljedeći način:

Def create @article = Article.new(params[:article]) @article.save redirect_to @article end

Evo šta se ovdje događa: svaki Rails model može biti inicijaliziran odgovarajućim atributima, koji će automatski biti vezani za odgovarajuće stupce baze podataka. U prvom redu radimo upravo to (zapamtite da params[:article] sadrži atribute koji nas zanimaju). Tada je @article.save odgovoran za spremanje modela u bazu podataka. Konačno, korisnika preusmjeravamo na akciju prikazivanja, koju ćemo kasnije definirati.

Možda se pitate zašto se A u Article.new piše velikim slovima kada svi ostali linkovi na članak u ovom vodiču koriste mala slova. U ovom kontekstu, mislimo na klasu pod nazivom Article, koja je definirana u app/models/article.rb. Imena klasa u Rubyju moraju početi velikim slovom.

Sada kada postoje validacije, pozivanje @article.save na nevažeći članak će vratiti false . Ako ponovo otvorite app/controllers/articles_controller.rb, vidjet ćete da ne provjeravamo rezultat pozivanja @article.save u akciji kreiranja. Ako @article.save ne uspije u ovoj situaciji, moramo ponovo pokazati obrazac korisniku. Da biste to učinili, zamijenite nove i kreirajte radnje u app/controllers/articles_controller.rb sa ovim:

Def new @article = Article.new end def create @article = Article.new(article_params) if @article.save redirect_to @article else render "new" end end private def article_params params.require(:article).permit(:title) , :text) kraj

Sada nova radnja kreira novu varijablu instance pod nazivom @article , a u nekoliko paragrafa ćete vidjeti zašto.

Imajte na umu da smo u akciji kreiranja koristili render umjesto redirect_to kada save vraća false. Metoda renderiranja se koristi za vraćanje objekta @article u novi predložak kada se renderira. Ovo prikazivanje se vrši u okviru istog zahtjeva kao i podnošenje obrasca, dok redirect_to govori pretraživaču da napravi drugi zahtjev.

5.11. Ažuriranja članaka

Otkrili smo "CR" dio CRUD-a. Sada se fokusirajmo na "U" dio, ažuriranje članaka.

Prvi korak je dodavanje radnje uređivanja u ArticlesController, obično između radnji nove i kreiranja, kao što je prikazano.

Def new @article = Article.new end def edit @article = Article.find(params[:id]) end def create @article = Article.new(article_params) if @article.save redirect_to @article else render "new" end kraj

Prikaz će sadržavati obrazac sličan onom koji smo koristili prilikom kreiranja novih članaka. Kreirajte datoteku pod nazivom app/views/articles/edit.html.erb i dodajte joj sljedeće:

Uređivanje članka

<%= form_with(model: @article, local: true) do |form| %> <% if @article.errors.any? %>

<%= pluralize(@article.errors.count, "error") %>

    <% @article.errors.full_messages.each do |msg| %>
  • <%= msg %>
  • <% end %>
<% end %>

<%= form.label:title %>
<%= form.text_field:title %>

<%= form.label:text %>
<%= form.text_area:text %>

<%= form.submit %>

<% end %> <%= link_to "Back", articles_path %>

Upravo sada, upućujemo obrazac na akciju ažuriranja, koja još nije definirana, ali ćemo to uskoro učiniti.

Prosljeđivanje objekta članka metodi form_with će automatski postaviti URL za slanje uređenog obrasca članka. Ova opcija govori Rails-u da želimo da se ovaj obrazac pošalje sa PATCH, HTTP metodom za koju se očekuje da će se koristiti za ažuriranja resurse prema REST protokolu.

Zatim morate kreirati akciju ažuriranja u app/controllers/articles_controller.rb. Dodajte ga između akcije kreiranja i privatne metode:

Def create @article = Article.new(article_params) if @article.save redirect_to @article else render "new" end end def update @article = Article.find(params[:id]) if @article.update(article_params) redirect_to @article else render "edit" end end private def article_params params.require(:article).permit(:title, :text) end

Novi metod, update , koristi se kada želite da ažurirate unos koji već postoji i uzima hash koji sadrži atribute koje želite da ažurirate. Kao i ranije, ako dođe do greške prilikom ažuriranja članka, želimo ponovo prikazati obrazac korisniku.

Ponovo smo koristili metodu article_params koju smo ranije definirali za akciju kreiranja.

Nije potrebno proslijediti sve atribute za ažuriranje. Na primjer, ako je pozvan @article.update(title: "Novi naslov"), Rails bi samo ažurirao atribut naslova, ostavljajući sve ostale atribute netaknutim.

<% @articles.each do |article| %> <% end %>
Naslov Tekst
<%= article.title %> <%= article.text %> <%= link_to "Show", article_path(article) %> <%= link_to "Edit", edit_article_path(article) %>

I također dodajte app/views/articles/show.html.erb u šablon tako da link "Uredi" također bude na stranici članka. Dodajte sljedeće na kraj predloška:

... <%= link_to "Edit", edit_article_path(@article) %> | <%= link_to "Back", articles_path %>

A ovako sada izgleda naša aplikacija:

5.12. Korištenje parcijala za čišćenje ponavljanja u pogledima

Naša stranica za uređivanje je vrlo slična novoj stranici, u stvari koriste isti kod za prikaz obrasca. Uklonimo ovo dupliranje korištenjem parcijalnog pogleda. Po konvenciji, djelomične datoteke počinju donjom crtom.

Kreirajte novu datoteku app/views/articles/_form.html.erb sa sljedećim sadržajem:

<%= form_with model: @article, local: true do |form| %> <% if @article.errors.any? %>

<%= pluralize(@article.errors.count, "error") %>zabranio čuvanje ovog članka:

    <% @article.errors.full_messages.each do |msg| %>
  • <%= msg %>
  • <% end %>
<% end %>

<%= form.label:title %>
<%= form.text_field:title %>

<%= form.label:text %>
<%= form.text_area:text %>

<%= form.submit %>

<% end %>

Ažurirajmo sada app/views/articles/new.html.erb prikaz da koristi ovaj novi djelomični, potpuno ga prepiši:

novi članak

<%= render "form" %> <%= link_to "Back", articles_path %>

I isto za app/views/articles/edit.html.erb prikaz:

Uredi članak

<%= render "form" %> <%= link_to "Back", articles_path %>

5.13. Brisanje članaka

Sada smo spremni pokriti "D" dio CRUD-a, brisanjem iz baze podataka. Slijedeći REST konvenciju, put za uklanjanje članaka u izlazu tračničkih ruta je sljedeći:

IZBRIŠI /articles/:id(.:format) articles#destroy

Metoda rutiranja brisanja mora se koristiti za rute koje uništavaju resurse. Ako se ostavi kao normalna ruta za dobivanje, bilo bi moguće generirati sljedeće zlonamjerne URL-ove:

pogledajte ovu mačku!

Koristimo metodu delete da uništimo resurse, a ova ruta je povezana sa akcijom uništavanja u app/controllers/articles_controller.rb, koja još ne postoji. Metoda uništavanja je obično posljednja CRUD akcija u kontroleru, i kao i sve javne CRUD akcije, mora se staviti ispred bilo koje privatne ili zaštićene metode. Dodajmo to:

Def destroy @article = Article.find(params[:id]) @article.destroy redirect_to articles_path end

Cijeli ArticlesController u app/controllers/articles_controller.rb bi sada trebao izgledati ovako:

Class ArticlesController< ApplicationController def index @articles = Article.all end def show @article = Article.find(params[:id]) end def new @article = Article.new end def edit @article = Article.find(params[:id]) end def create @article = Article.new(article_params) if @article.save redirect_to @article else render "new" end end def update @article = Article.find(params[:id]) if @article.update(article_params) redirect_to @article else render "edit" end end def destroy @article = Article.find(params[:id]) @article.destroy redirect_to articles_path end private def article_params params.require(:article).permit(:title, :text) end end

Možete pozvati uništiti objekte Active Record kada ih želite ukloniti iz baze podataka. Imajte na umu da ne moramo da dodajemo pogled za ovu radnju jer preusmjeravamo na radnju indeksa.

Listing Articles

<%= link_to "New article", new_article_path %> <% @articles.each do |article| %> <% end %>
Naslov Tekst
<%= article.title %> <%= article.text %> <%= link_to "Show", article_path(article) %> <%= link_to "Edit", edit_article_path(article) %> <%= link_to "Destroy", article_path(article), method: :delete, data: { confirm: "Are you sure?" } %>

Ovdje koristimo link_to na drugačiji način. Imenovanu rutu prosljeđujemo kao drugi argument, a opcije kao drugi argument. Metoda: :delete i data: ( potvrdi: "Jeste li sigurni?") opcije se koriste kao html5 atributi, tako da kada se klikne na link, Rails će prvo pokazati korisniku dijalog za potvrdu, a zatim poslati link koristeći metodu brisanja . Ovo se radi pomoću rails-ujs JavaScript datoteke, koja se automatski uključuje u izgled aplikacije (app/views/layouts/application.html.erb) kada se aplikacija generiše. Bez ove datoteke, dijalog za potvrdu neće biti prikazan.

Čestitamo, sada možete kreirati, pregledavati sve i pojedinačno, ažurirati i brisati članke.

Dodavanje drugog modela

Vrijeme je da aplikaciji dodate drugi model. Drugi model će obrađivati ​​komentare na članke.

6.1. Generisanje modela

Namjeravamo koristiti isti generator koji smo koristili ranije prilikom kreiranja modela članka. Ovaj put ćemo kreirati model komentara koji sadrži link do članka. Pokrenite sljedeću naredbu u terminalu:

$ tračnice generiraju model Komentar komentar:string tijelo:tekst članak:reference

Ova komanda generiše četiri fajla:

Prvo, pogledajmo app/models/comment.rb:

razredni komentar< ApplicationRecord belongs_to:article end

Ovo je vrlo slično modelu članka koji smo vidjeli ranije. Razlika je u redu belongs_to:article , koji postavlja veza aktivni zapis. O povezivanju ćete naučiti u sljedećem dijelu vodiča.

Ključna riječ (:references) koja se koristi u komandi bash je poseban tip podataka za modele. Kreira novu kolonu u vašoj bazi podataka s imenom renderiranog modela s dodatkom _id, koji može sadržavati numeričke vrijednosti. Da biste bolje razumjeli, analizirajte datoteku db/schema.rb nakon što se migracija završi.

Pored modela, Rails je također napravio migraciju kako bi kreirao odgovarajuću tablicu baze podataka:

Class CreateComments< ActiveRecord::Migration def change create_table:comments do |t| t.string:commenter t.text:body t.references:article, null: false, foreign_key: true t.timestamps end end end

Linija t.references kreira numeričku kolonu pod nazivom article_id , indeks na njoj i ograničenje stranog ključa koji ukazuje na kolonu id tabele članaka. Zatim pokrećemo migraciju:

$ rails db:migrate

Rails je dovoljno pametan da pokrene samo one migracije koje još nisu pokrenute prema trenutnoj bazi podataka, u našem slučaju ćete vidjeti:

CreateComments: migracija =============================================== = = -- create_table(:comments) -> 0,0115s == Kreiraj komentare: migrirano (0,0119s) ============================ == ==========

6.2. Povezivanje modela

Linkovi Active Record vam omogućavaju da lako deklarirate odnose između dva modela. U slučaju komentara i članaka, odnos možete opisati na sljedeći način:

  • Svaki komentar pripada jednom članku.
  • Jedan članak može imati mnogo komentara.

U stvari, veoma je blizak sintaksi koju Rails koristi za deklarisanje ovog odnosa. Već ste vidjeli red koda u modelu komentara (app/models/comment.rb) koji čini da svaki komentar pripada članku:

razredni komentar< ApplicationRecord belongs_to:article end

Morate urediti app/models/article.rb da dodate drugu stranu linka:

razredni članak< ApplicationRecord has_many:comments validates:title, presence: true, length: { minimum: 5 } [...] end

Ove dvije objave su automatski dostupne veliki broj mogućnosti. Na primjer, ako imate varijablu instance @article koja sadrži članak, možete dobiti sve komentare koji pripadaju tom članku u nizu pozivanjem @article.comments .

6.3. Dodavanje rute za komentare

Kao i kod kontroler dobrodošlice, moramo dodati rutu tako da Rails zna na koju adresu želimo ići da bismo vidjeli komentare. Ponovo otvorite datoteku config/routes.rb i uredite je na sljedeći način:

Resursi:članci rade resursi:komentari završavaju

Ovo će stvoriti komentare poput ugniježđeni resurs u člancima. Ovo je druga strana hvatanja hijerarhijskog odnosa koji postoji između članaka i komentara.

6.4. Generirajte kontroler

Sa modelom na mjestu, obratimo pažnju na kreiranje odgovarajućeg kontrolera. Opet ćemo koristiti isti generator koji smo koristili prije:

$ tračnice generiraju kontroler

Kreiraće se četiri fajla i prazan direktorijum:

Kao i kod svakog drugog bloga, naši čitatelji će kreirati svoje komentare odmah nakon čitanja članka, a nakon dodavanja komentara bit će usmjereni nazad na stranicu za prikaz članka i vidjeti da je njihov komentar već prikazan. U tom smislu, naš CommentsController služi kao sredstvo za kreiranje komentara i uklanjanje neželjene pošte, ako postoji.

Prvo ćemo proširiti predložak emisije članka (app/views/articles/show.html.erb) kako bismo nam omogućili da dodamo novi komentar:

Naslov: <%= @article.title %>

tekst: <%= @article.text %>

Dodajte komentar:

<%= form_with(model: [ @article, @article.comments.build ], local: true) do |form| %>

<%= form.label:commenter %>
<%= form.text_field:commenter %>

<%= form.label:body %>
<%= form.text_area:body %>

<%= form.submit %>

<% end %> <%= link_to "Edit", edit_article_path(@article) %> | <%= link_to "Back", articles_path %>

Ovo će dodati obrazac na stranicu za prikaz članka koji kreira novi komentar kada se pozove radnja kreiranja na CommentsControlleru. Ovdje poziv form_with koristi niz, koji će kreirati ugniježđenu rutu poput /articles/1/comments.

Hajde da napišemo create u app/controllers/comments_controller.rb:

Class CommentsController< ApplicationController def create @article = Article.find(params[:article_id]) @comment = @article.comments.create(comment_params) redirect_to article_path(@article) end private def comment_params params.require(:comment).permit(:commenter, :body) end end

Ovo je malo složenije od onoga što ste vidjeli u kontroleru članaka. Ovo je nuspojava priloga koji ste postavili. Svaki zahtjev za komentarom prati članak uz koji je komentar priložen, tako da prvo rješavamo dohvat članka pozivanjem find na modelu Članak.

Osim toga, kod koristi prednosti nekih metoda dostupnih za odnose. Koristimo metodu kreiranja na @article.comments da kreiramo i sačuvamo komentar. Ovo automatski povezuje komentar tako da pripada određenom članku.

Nakon što kreiramo novi komentar, korisnika vraćamo na originalni članak pomoću pomoćnika article_path(@article). Kao što smo vidjeli, on poziva akciju show na ArticlesControlleru, koji zauzvrat prikazuje show.html.erb šablon. Ovo je mjesto gdje želimo prikazati komentare, pa dodajmo sljedeće u app/views/articles/show.html.erb.

Naslov: <%= @article.title %>

tekst: <%= @article.text %>

Komentari

<% @article.comments.each do |comment| %>

komentator: <%= comment.commenter %>

komentar: <%= comment.body %>

<% end %>

Dodajte komentar:

<%= form_with(model: [ @article, @article.comments.build ], local: true) do |form| %>

<%= form.label:commenter %>
<%= form.text_field:commenter %>

<%= form.label:body %>
<%= form.text_area:body %>

<%= form.submit %>

<% end %> <%= link_to "Edit", edit_article_path(@article) %> | <%= link_to "Back", articles_path %>

Sada možete dodati članke i komentare na svoj blog i prikazati ih na pravim mjestima.

Refaktoring

Sada kada imamo članke i komentare koji rade, pogledajmo app/views/articles/show.html.erb predložak. Postalo je dugo i neprijatno. Upotrijebimo parcijale da ga ispraznimo.

7.1. Rendering Collections of Partials

Prvo, napravimo djelomični komentar koji prikazuje sve komentare za članak. Kreirajte datoteku app/views/comments/_comment.html.erb i stavite u nju sljedeće:

komentator: <%= comment.commenter %>

komentar: <%= comment.body %>

Zatim možete promijeniti app/views/articles/show.html.erb ovako:

Naslov: <%= @article.title %>

tekst: <%= @article.text %>

Komentari

<%= render @article.comments %>

Dodajte komentar:

<%= form_with(model: [ @article, @article.comments.build ], local: true) do |form| %>

<%= form.label:commenter %>
<%= form.text_field:commenter %>

<%= form.label:body %>
<%= form.text_area:body %>

<%= form.submit %>

<% end %> <%= link_to "Edit", edit_article_path(@article) %> | <%= link_to "Back", articles_path %>

Ovo će sada prikazati app/views/comments/_comment.html.erb djelomično jednom za svaki komentar u kolekciji @article.comments. Pošto metoda renderiranja ponavlja kolekciju @article.comments, ona svaki komentar dodeljuje lokalnoj varijabli koja se zove parcijalna, u našem slučaju comment , koja nam je dostupna u parcijalu za renderovanje.

7.2. Prikaz obrasca u parcijalu

Premjestimo i novi odjeljak za komentare u naš dio. Opet kreirajte datoteku app/views/comments/_form.html.erb koja sadrži:

<%= form_with(model: [ @article, @article.comments.build ], local: true) do |form| %>

<%= form.label:commenter %>
<%= form.text_field:commenter %>

<%= form.label:body %>
<%= form.text_area:body %>

<%= form.submit %>

<% end %>

Zatim promijenite app/views/articles/show.html.erb ovako:

Naslov: <%= @article.title %>

tekst: <%= @article.text %>

Komentari

<%= render @article.comments %>

Dodajte komentar:

<%= render "comments/form" %> <%= link_to "Edit", edit_article_path(@article) %> | <%= link_to "Back", articles_path %>

Drugi render samo definiše predložak za parcijalni deo koji želimo da renderujemo, komentare/formu. Rails je dovoljno pametan da zameni donju crtu u ovom redu i shvati da želite da prikažete datoteku _form.html.erb u direktorijumu app/views/comments.

Objekt @article dostupan je u svim dijelovima prikazanim u pogledu jer smo ga definirali kao varijablu instance.

Brisanje komentara

Još jedna važna karakteristika bloga je mogućnost uklanjanja neželjene pošte. Da bismo to učinili, moramo umetnuti neku vezu u prikaz i akciju uništavanja u CommentsController.

komentator: <%= comment.commenter %>

komentar: <%= comment.body %>

<%= link_to "Destroy Comment", , method: :delete, data: { confirm: "Are you sure?" } %>

Pritiskom na ovo novi link"Destroy Comment" će pokrenuti DELETE /articles/:article_id/comments/:id na našem CommentsControlleru koji će se zatim koristiti za pronalaženje komentara koji želimo da izbrišemo, pa hajde da dodamo akciju uništavanja našem kontroleru (app/controllers/comments_controller .rb):

Class CommentsController< ApplicationController def create @article = Article.find(params[:article_id]) @comment = @article.comments.create(comment_params) redirect_to article_path(@article) end def destroy @article = Article.find(params[:article_id]) @comment = @article.comments.find(params[:id]) @comment.destroy redirect_to article_path(@article) end private def comment_params params.require(:comment).permit(:commenter, :body) end end

Akcija uništavanja će pronaći članak koji gledamo, pronaći komentar u kolekciji @article.comments, a zatim ga ukloniti iz baze podataka i vratiti nas na prikaz članka.

8.1. Brisanje povezanih objekata

Ako izbrišete članak, komentari povezani s njim također se moraju izbrisati, inače će samo zauzeti prostor u bazi podataka. Rails vam omogućava da koristite zavisnu opciju na linku da biste to postigli. Izmijenite model članka, app/models/article.rb , na sljedeći način:

razredni članak< ApplicationRecord has_many:comments, dependent: :destroy validates:title, presence: true, length: { minimum: 5 } [...] end

Sigurnost

9.1. Basic Authentication

Ako objavite svoj blog na mreži, svako može dodavati, uređivati ​​i brisati članke ili brisati komentare.

Rails pruža osnovni HTTP sistem autentikacije koji dobro radi u ovoj situaciji.

U ArticlesControlleru nam je potreban način da blokiramo pristup raznim radnjama ako korisnik nije autentificiran. Ovdje možemo koristiti Rails http_basic_authenticate_with metodu da dozvolimo pristup potrebnim radnjama ako metoda to dozvoljava.

Da bismo koristili sistem provjere autentičnosti, definirat ćemo ga na vrhu našeg ArticlesControllera u app/controllers/articles_controller.rb. U našem slučaju želimo da korisnik bude autentificiran za svaku radnju osim za index i show , pa ćemo to napisati ovako:

Class ArticlesController< ApplicationController http_basic_authenticate_with name: "dhh", password: "secret", except: [:index, :show] def index @articles = Article.all end # пропущено для краткости

Također želimo dozvoliti samo provjerenim korisnicima da brišu komentare, pa ćemo u CommentsController (app/controllers/comments_controller.rb) napisati:

Class CommentsController< ApplicationController http_basic_authenticate_with name: "dhh", password: "secret", only: :destroy def create @article = Article.find(params[:article_id]) # ... end # пропущено для краткости

Sada, ako pokušate kreirati novi članak, naići ćete na izazov HTTP osnovne provjere autentičnosti:

Druge metode provjere autentičnosti također su dostupne za Rails aplikacije. Dva popularna Rails dodatka su Devise i Authlogic, između ostalih.

9.2. Ostala sigurnosna razmišljanja

Sigurnost, posebno u web aplikacijama, je ogromna i detaljna oblast. Sigurnost vaše Rails aplikacije je detaljnije pokrivena u Vodiču za sigurnost aplikacije Rails Najlakši način rada sa Railsom je pohranjivanje svih vanjskih podataka u UTF-8. Ako ne, Ruby i Rails biblioteke će često moći da konvertuju vaše izvorne podatke u UTF-8, ali to ne funkcioniše uvek pouzdano, pa je najbolje da budete sigurni da su svi spoljni podaci UTF-8.

Ako napravite grešku u ovoj oblasti, najčešći simptom je crni dijamant sa znakom pitanja unutar njega koji se pojavljuje u pretraživaču. Još jedan uobičajeni simptom su znakovi poput "ü" koji se pojavljuju umjesto "ü". Rails poduzima brojne interne korake za ublažavanje uobičajenih slučajeva problema koji se mogu automatski otkriti i popraviti. Međutim, ako postoje eksterni podaci koji nisu pohranjeni u UTF-8, to može dovesti do ovakvih problema koje Rails ne može automatski otkriti i popraviti.

Dva najčešća izvora podataka koji nisu u UTF-8 su:

  • Vaše uređivač teksta: Većina uređivača teksta (kao što je TextMate) podrazumevano sprema datoteke kao UTF-8. Ako vaš uređivač teksta to ne učini, može doći do toga da se posebni znakovi upisani u vaše šablone (kao što je é) pojave kao dijamant sa upitnikom u pretraživaču. Ovo se također odnosi na vaše i18N datoteke za prijevod. Većina uređivača koji podrazumevano ne koriste UTF-8 (kao što su neke verzije Dreamweaver-a) nude način da promenite podrazumevane vrednosti u UTF-8. Učiniti.
  • Vaša baza podataka: Rails će po defaultu konvertirati podatke iz vaše baze podataka u UTF-8 na granici. Međutim, ako vaša baza podataka ne koristi UTF-8 interno, možda neće moći pohraniti sve znakove koje upisuje vaš korisnik. Na primjer, ako vaša baza podataka interno koristi latinicu-1 i vaš korisnik unese ruske, hebrejske ili japanske znakove, podaci će biti izgubljeni čim uđu u bazu podataka. Ako je moguće, koristite UTF-8 kao internu memoriju u vašoj bazi podataka.

Autor je bio potaknut da napiše ovaj tekst proučavanjem brojnih materijala pronađenih na Global Webu, koji bi mogli biti označeni istim naslovom/tagom: Kako sam naučio Ruby(ili Ruby on Rails, PHP, JS, C++, itd.) za tri dana.

Pa, ili slično. Autor se, pak, odmah sjetio (nekontroliranih asocijacija) niza anegdota, opet ujedinjenih zajedničkom temom, koja se sastoji u procjeni radnji koje se mogu glupo izvesti... Ruski jezik je moćan i nevjerojatno aforističan, ali, nažalost, čini se da nije moguće citirati ova remek-djela ovdje; shodno tome, ne preostaje ništa drugo nego da ponudi čitaocu verziju dokija koju je sam napisao iz ciklusa Kako uživati ​​i relativno brzo naučiti raditi u Ruby on Rails.

Radni primjer koda opisanog u članku, između ostalih Rails primjera - uvijek se može naći u autorskom testnom blogu na herokuapp.com, dobrodošli.

Tehnika je jednostavna, a autor tu nimalo ne pretenduje da bude pionir: potrebno je da bude zanimljivo, a rezultati ne bi dugo čekali. Ne škodi ako pokušate da igrate na sopstvene slabosti, ponekad čak i sujeta može biti korisna za stvar; rezultati razvoja trebaju biti takvi da se mogu s ponosom prezentirati čitateljima, prijateljima i kolegama na webu, raspoređeni negdje na Heroku ili Amazon, također - tako da im se možete vraćati iznova i iznova, obnavljajući i poboljšavajući, forume i StackOwerflow da nam svima pomognu. Pa kažem, zašto ne napišete, za početak, svoj blog Ruby on Rails?

Predlažem da počnete od odličnih dokova Getting Started with Rails ili njegove adaptacije Rails-a na ruskom jeziku za početnike, također Build a Blog with Ruby on Rails, također kao pomoć materijalima ovog bloga, linkovi do kojih se lako nalaze na lijevoj bočnoj traci . A onda - sve, pa magija, isprva je sve naslikano kao sat, otvorite konzolu - i samo naprijed... autor smatra svojom dužnošću dati samo nekoliko objašnjenja i tehničkih preporuka osmišljenih kako bi se adeptu olakšalo tražite i steknite Svetlu stranu Sile, i nema više Toga. Ovo je samo vaša borba, samo naprijed i vratite se s pobjedom.

Dakle. Korak po korak prvog priručnika je dobro kalibriran i neće vam, nadam se, stvarati probleme; sve što se od vas traži je da budete pažljivi, pedantno ponavljate detaljno komentarisane korake...i za sat vremena vaš prvi blog je spreman, možete napraviti pauzu i preći na drugi, nešto zanimljiviji. I upravo ovdje će vam, možda će se ispostaviti, trebati nekoliko riječi za oproštaj, na koje ćemo sada preći.

Počnimo s izjavom da su ove metode sasvim sposobne (alternativno) izgledati ovako, ali ni na koji način kao original:

app/controllers/posts_controller.rb

# Akcija ažuriranja ažurira objavu novim informacijama def update if @post.update_attributes(post_params) flash[:notice] = "Uspješno ažurirana objava!" redirect_to posts_path else flash[:alert] = "Greška pri ažuriranju posta!" render:edit end end # Akcija show prikazuje pojedinačnu objavu nakon preuzimanja id def show end # Akcija uništavanja trajno uklanja objavu iz baze podataka def destroy @post = Post.find(params[:id]) if @post .destroy flash[:notice] = "Uspješno obrisana objava!" redirect_to posts_path else flash[:alert] = "Greška pri ažuriranju posta!" kraj kraj

Pa ipak, pokušajte ovako i onako, zašto ne. Idemo dalje.

Drugi blog, iako složeniji (dodan urednik članka CKEditor i uređaj, fleksibilni alat za autentifikaciju za rails aplikacije), iz nekog razloga ne dozvoljava komentare u originalu. Ovaj nedostatak ćete morati sami nadoknaditi: nastavite po analogiji s opisom stvaranja prvog bloga, bit će potrebne samo vrlo male promjene: jednostavno rečeno, umjesto članak i članci prvi blog koji ćete imati pošta i postova u drugom blogu, to je sve, u stvari, razlika. Budite oprezni i sve će uspjeti.

Recaptcha moraćete i sami da se povežete sa komentarima: da, da, ovo nije Joomla za vas, naviknite se. Međutim, titanski napori nisu potrebni, proces povezivanja Recaptcha detaljno opisano u članku Uključujući Recaptcha u Rails aplikaciju. Nadalje, nije suvišno prilagoditi uređaj na način da blog radi (barem u početku!) u modu za jednog korisnika, omogućavajući mnogim svojim čitaocima režim SAMO ČITANJE, drugim riječima, zabranit ćemo registraciju novih korisnika za početak. Na webu postoji mnogo različitih recepata kako to učiniti, ali, po mom mišljenju, najkompetentniji hak ove vrste nalazi se u Wiki deviseu, u materijalu pod nazivom Kako: Postaviti devise kao sistem jednog korisnika . Naime, kreiramo novi kontroler:

app/controllers/registrations_controller.rb:

Class RegistrationsController< Devise::RegistrationsController before_action:one_admin_registered?, only: [:new, :create] protected def one_admin_registered? if ((Admin.count == 1) & (admin_signed_in?)) redirect_to root_path elsif Admin.count == 1 redirect_to new_admin_session_path end end end

onda ga poništimo u routes.rb i to je to:

#devise_for:admins devise_for:admins, kontrolori: (registracije: "registracije")

CKEDITOR.editorConfig = function(config) ( // config.enterMode = 2; //onemogućeno

Potpuno config.enterMode = CKEDITOR.ENTER_BR // pritiskom na ENTER KEY ulaz
config.shiftEnterMode = CKEDITOR.ENTER_P; //pritiskom na SHIFT + ENTER TEYS ulaz

Config.autoParagraph = false; // zaustavlja automatsko umetanje

na fokus);

Možda, za početak, to je stvarno sve... dovraga, skoro sam zaboravio ono najvažnije. Ako ćete svoj novi blog postaviti na Heroku- dodajte ova tri reda u

config/application.rb

Config.assets.precompile += Ckeditor.assets config.assets.precompile += %w(ckeditor/*) config.autoload_paths += %W(#(config.root)/app/models/ckeditor)

Inače CKEditor odbija da radi za vas na novom mjestu.

Ruby je moćan i popularan programski jezik. Osim njegove popularnosti, na njemu se temelji i dobro poznati okvir koji vam omogućava da kreirate cool i dinamične web stranice različitih tema. Ako pogledate TIOBE rang listu, onda je jezik među dvadeset najpopularnijih jezika na svijetu.

Jezik se pojavio 1995. godine i smatra se mladim jezikom u poređenju sa C ili C ++, koji su se pojavili 1972. odnosno 1983. godine. Jezik ima niz prednosti i specifičnosti koje su implementirane isključivo u njemu, ako uporedimo druge popularne programske jezike.

Plan kursa

Tokom video kursa naučit ćete jezik Ruby bez korištenja dodatnih okvira. Dodatni kursevi na ruby možete pronaći na.

Tokom kursa naučićemo kako da instaliramo i radimo sa jezikom, naučićemo sintaksu Ruby(varijable, petlje, uslovne izjave), kao i složenije stvari: OOP, rad sa datotekama, izuzeci, metode i mnoge druge teme.


Instalacija Ruby-a na Windows

Da biste instalirali Ruby na Windows, koristite RubyInstaller, koji se može preuzeti sa službene web stranice na ovom linku. Preuzmite najnoviju verziju i instalirajte je kao običan program. Nakon što je instalacija završena, vidjet ćete sličan prozor:

U ovom prozoru provjerite je li potvrđen izbor u polju za potvrdu, a zatim će se otvoriti druga aplikacija za instalaciju ruby u sistem.

U prozoru koji se otvori unesite redom 1 i pritisnite Enter, nakon što sačekate završetak instalacije pritisnite 2 i Enter i na kraju izvršite treću komandu pritiskom na 3 i Enter.

Instaliranje Ruby-a na Mac

Na Macu, Ruby je instaliran prema zadanim postavkama, tako da ne morate ništa dodatno raditi. Verziju jezika možete provjeriti u terminalu pomoću sljedeće naredbe:

Ako je verzija zastarjela, možete preuzeti novu. Prvo morate preuzeti Ruby menadžer verzija. To se radi preko terminala naredbom:

Curl -L https://get.rvm.io | bash -s stabilan

Nakon instaliranja upravitelja, ponovo pokrenite terminal. Pokrenite sljedeću naredbu:

Rvm lista poznata

Nakon ponovnog pokretanja, možete instalirati bilo koju verziju koju želite. U našem slučaju instalirana je verzija 2.4.2:

rvm instaliraj ruby-2.4.2

Na kraju, možete ponovo provjeriti verziju i ako je još uvijek stara, samo postavite zadanu verziju na novu verziju.

Jedan od prvih i najsveobuhvatnijih Rails tutorijala na webu. Glavna prednost je detaljna pokrivenost najpotrebnijih pitanja, redovno ažuriranje i besplatni sadržaj.

Istina, resurs je u potpunosti na engleskom. I važno je shvatiti da je ovo izgrađeno u obliku knjige - sve probleme morate sami shvatiti. Zbog toga se ne može predvidjeti trajanje i složenost obuke.

2. Railcasts

Još jedan dobro poznat na Internetu resurs za obuku. Više od jedne generacije Rails programera je odraslo na njemu. Također na engleskom.

Nije izgrađen kao holistički kurs obuke, već kao serija screencasta - kratkih lekcija na određenu temu. Ima mnogo lekcija, možete pronaći skoro svaku temu.

Nažalost, projekat je prestao da se ažurira 2013. godine.

3. Tračnice za zombije

Sjajan uvod u šine za početnike u igri u stilu potrage sa zombi vibrom. Veoma je popularan među potpunim početnicima.

Zgodno je što ne morate ništa da instalirate na računar. Sve zagonetke se rješavaju u pretraživaču. Korak po korak prolazite kroz igru ​​i počinjete razumjeti osnove Ruby on Rails.

Ako uopšte ne razumete programiranje, ovo je vaš izbor. U kursu nema složenih tema, ništa ne odvlači pažnju od osnova. Na engleskom.

3. Udemy

Velika kolekcija video kurseva. Među njima su mnogi na rubinima i rubinima na šinama. Nema smisla davati određene linkove - birajte po svom ukusu po cijeni ili popularnosti.

Udemy format uključuje prilično kratke kurseve s naglaskom na video lekcije. Ne očekujte ozbiljne domaće zadatke ili brzu podršku od nastavnika.

4. Ruby Bursa

Snažan kratki kurs o osnovama razvoja Railsa. Iskusni profesori, dobar program.

Na kursu je poželjno lično prisustvo polaznika i odvija se samo u velikim ukrajinskim gradovima.

5. Razvoj na Ruby on Rails od Evil Martians

Trodnevni intenziv jednog od najiskusnijih Ruby on Rails timova u Rusiji.

Rijetko se radi. Skupo je (sudeći po recenzijama, isplati se). Zahteva lično prisustvo. Pogodno samo za napredne programere, tu nema šta da rade početnici.

6. Ruby on Rails Online Intensive od Good Programmer

Svježi projekat tima poznatog na Youtube-u po Ruby kursevima za početnike.

3-mjesečni intenzivni program dizajniran je za potpune početnike i obećava da ćete postati mlađi programer s portfeljem od ništa više od 12 pametnih aplikacija.

Kurs se sastoji od video lekcija, praktičnih zadataka, podrške nastavnicima, redovnih webinara.

Sudeći po youtube kanal i komentari korisnika - ovi momci znaju šta rade i neće im biti dosadno.

Glavna prednost svakog web dizajnera je da može razumjeti – pa čak i organizirati – ono što se događa „iza kulisa“.

U najmanju ruku, trebali biste uzeti neke lekcije programiranja. Ne govorim o front-end jezicima kao što su HTML i CSS - vjerovatno već znate dosta toga. Govorim o pozadinskim stvarima.

Ako znate kako postaviti temelje, onda možete bolje razumjeti kako dizajnirati ostatak stranice. Činjenica je da će vas učenje kodiranja učiniti erudiiranijim dizajnerom. Osim toga, tko ne bi želio zaposliti dizajnera koji zna sve od dizajna do izrade web stranica?

Trik je u odabiru mjesta za početak. Učenje programiranja može biti težak proces, posebno ako odaberete jedan od većine složenih jezika kao C++ ili PHP.

Dakle, koje je najbolje mjesto za početak? Postoji samo jedan odgovor: Ruby on Rails je jedan od najboljih programskih jezika i okvira za učenje osnova dizajna.

Zašto je Ruby najbolji izbor?

Za početnike, Ruby je jedan od najlakših jezika za učenje, posebno ako imate HTML ili CSS iskustvo koje ima većina dizajnera.

Jedan od prvih programa koje ćete napraviti kada počnete učiti jezik je zloglasni "Hello World!", koji uključuje ispisivanje tih riječi na ekranu.

Sa jezicima kao što je C++, može biti bilo gdje od pet do sedam linija koda samo za prikaz te dvije riječi. Ali ako koristite Ruby, postojaće samo jedan red i jedna naredba.

Stavlja "zdravo, svijet!"

To je sve! To je sve što vam treba da odštampate riječi "Zdravo svijete!" na ekranu. Prilično lako, zar ne?

Ruby on Rails je takođe veoma suv jezik. Kao jedan od principa razvoja, DRY (suvo) znači "Ne ponavljaj se" (Ne ponavljaj se!) - to jest, ne programiraj ponovo element kada možeš koristiti onaj koji si već kreirao. Ovo čini Ruby veoma laganim i često korišćenim programskim jezikom za razvoj, jer ima za cilj da se projekat završi brzo i efikasno.

Ruby ili Rails?

Ruby je programski jezik. Rails je okvir koji koristi Ruby da obavi posao. Ruby on Rails framework je kolekcija prefabrikovanog ili unaprijed napisanog koda koji pomaže da se ubrza proces kreiranja novih projekata. U početku je kreiran za razvoj Basecamp alata za upravljanje projektima. Osim Basecamp-a, postoje i druge popularne web aplikacije napravljene pomoću Railsa, kao što su 500px, ThemeForest i MyFitnessPal.

Kada shvatite kako raditi s Ruby jezikom i natjerate stvari da rade u okviru Ruby On Rails, možete početi graditi web aplikacije.

Ruby - na vrhuncu popularnosti!

Zahvaljujući eksploziji popularnosti mobilnih uređaja i tehnologija koja je uvijek u kontaktu, Ruby je trenutno nevjerovatno popularan. I vjerovatno će tako biti i dalje. Indeks TIOBE rangira Ruby kao 13. najpopularniji programski jezik. U skladu s novim trendovima, prema Indeed.com, Ruby također doživljava iznenađujuće veliku potražnju.

TIOBE Indeks

Bilo kako bilo, bilo da odaberete potražnju ili popularnost, Ruby je prilično popularan. Ovo ga čini jednim od najbolja mesta za početak, jer kada jednom naučite jezik, možete dobiti posao prilično brzo. I to prije nego počnete učiti drugi jezik kako biste proširili svoje vještine.

Ruby ima jako uporište!

Neki drugi jezici su bili više uz nas, istina, ali čak i tako, podrška i dokumentacija blijedi u odnosu na ono što je dostupno za Ruby. Drugim jezicima takođe nedostaje kohezija zajednice oko jednog snažno podržanog okvira.

Zahvaljujući Ruby On Rails okviru, već postoje tone postojećeg koda koji možete koristiti u svojim projektima. Ruby Gems, Ruby framework biblioteka, ima preko 600.000 biblioteka koje možete izabrati.

Svaki put kada naučite nešto novo, potrebno vam je puno dokumentacije i podrške. Postoji mnogo mjesta za pronalaženje tutorijala, tutorijala, vodiča, pa čak i foruma za pitanja i odgovore. Ako naiđete na određeni problem, jednostavna pretraga weba će ga vjerovatno riješiti. Važno je.

Jednostavna dokumentacija i lak pristup podršci su neophodni kada učite novi jezik – kada zapravo učite nešto novo.

Ruby "dopušta" veću kontrolu nad dizajnom

Ako ste samo web dizajner, kreiranje web stranice može biti dug i složen proces. Kada sjednete da radite s programerom i razgovarate o potrebnom back-endu za vašu web stranicu, često morate žrtvovati front end kako bi sve funkcioniralo kako treba.

U konačnici, to može dovesti do proizvoda koji izgleda potpuno drugačije od vaše originalne vizije. Programera možda nije briga, ali će to vjerovatno biti problematično za vas.

Nećete naići na probleme ove vrste ako sami programirate. Ne morate da zavisite od drugih da biste dobili gotov projekat i imaćete mnogo bolje razumevanje šta se može postići u smislu razvoja. Sigurno je bilo trenutaka ili dva kada su vaši projektni ciljevi bili previsoki za jednog programera ili razvojni tim? Kada naučite jezik kao što je Ruby, možete uživati ​​u lakoći razumijevanja potreba i mogućnosti, s druge strane.

U suštini, Ruby je dizajniran da se koristi u web aplikacijama i web razvoju, tako da je savršeno mjesto za ambiciozne web dizajnere. Kada shvatite jezik i naučite kako koristiti Ruby on Rails okvir, imat ćete mnogo više kontrole nad svojim projektima.

Gdje naučiti Ruby?

Većina Najbolji način naučiti jezik znači uroniti u njega i raditi s njim. Postoji mnogo vodiča i tutorijala na koje se također možete obratiti. Ako imate razvijenu vizuelnu memoriju, i bolje razumete kroz vizuelne prezentacije, onda idite na YouTube - postoji veliki izbor edukativnih videa.

Ako želite tradicionalno iskustvo učenja u učionici, možete učiti na web stranicama za učenje programiranja. Ne morate ići na univerzitet ili koledž da biste stekli radno obrazovanje.

Jedan od mojih omiljenih resursa - i potpuno besplatnih - za učenje Railsa je Rails Tutorial Michaela Hartlea. Odvest će vas od jednostavnog do složenog projekta vašim vlastitim tempom i možete početi ispočetka bez apsolutno nikakvog znanja o Ruby on Rails.

Bez obzira koji put učenja odaberete, zapamtite da samo vježba čini savršenim. Postavite lične ciljeve da svaki dan provedete određenu količinu vremena radeći s Ruby. Držite se tih ciljeva i budite uporni. Prije nego što naučite ovaj jezik do kraja, već ćete biti stručnjak koji može kreirati neke fantastične projekte.