Ce este Ruby on Rails?

Credite de imagine: RubyonRails.org

Un cadru de dezvoltare web pentru puristi

În 1995, Yukihiro Matsumoto a lansat Ruby 0.95 ca limbaj de programare cu scop general, orientat spre obiecte (OO)

Ca un maniac de limbă și un ventilator OO timp de 15 ani, am vrut cu adevărat un autentic limbaj de scripting orientat spre obiect și ușor de utilizat. Am căutat, dar nu am găsit unul. Așa că am decis să reușesc. - Y. Matsumoto

Apoi, în 2004, David Heinemeier Hansson a lansat prima versiune a Ruby on Rails ca cadru de aplicații web pe care îl folosea pentru lansarea aplicației sale de management de echipă Basecamp. El a deschis Ruby on Rails în 2005, iar Apple a lansat-o cu OS X Leopard în 2007.

Pentru acest tutorial, mă refer la Ruby on Rails, pe scurt Rails; unii oameni folosesc de asemenea RoR.

Rails este folosit de o mare varietate de aplicații web cunoscute, cum ar fi GitHub, Shopify, Airbnb, Twitch, SoundCloud, Hulu, Zendesk, Square și Highrise. Cu toate acestea, a fost criticat pentru limitările de scalabilitate, în special cu Twitter, care trebuia treptat să-și transfere multe servicii către alte platforme. Acestea fiind spuse, Twitter are o rată ridicată a tranzacțiilor și provocări de scalabilitate.

În acest tutorial, voi răspunde la întrebarea "Ce este Ruby on Rails?" și vă va prezenta la elementele de bază ale cadrului de programare pentru a vă ajuta să experimentați cu acesta.

Înainte de a începe, amintiți-vă, particip la discuțiile de mai jos. Dacă aveți o întrebare sau o sugestie de subiect, vă rugăm să postați un comentariu de mai jos sau să mă contactați pe Twitter @reifman. 

Ce este Ruby on Rails?

Ruby on Rails este un sistem popular, open-source, orientat spre obiect, folosit de mulți programatori și furnizori de aplicații. De asemenea, se bazează pe o abordare a modelului de vizualizare a modelului (MVC).

Modelele se bazează pe bazele de date și funcționalitatea unui obiect din aplicație, cum ar fi utilizatorii. Rails oferă o convenție standard pentru denumirea și structura directorului de fișiere, care simplifică programarea, dar oferă, de asemenea, soluții automatizate pentru construirea de funcții, numite schele. De asemenea, asigură un mediu comun pentru dezvoltatorii care lucrează împreună și beneficiază de eforturile celuilalt.

Optimizarea pentru fericirea programatorului cu Convenția peste Configurație este modul în care ne întoarcem.

Controlorul gestionează cererile în primul rând între utilizator și server, colectând date de la modele și returnându-l utilizatorului prin intermediul fișierelor Vizualizare.

Vizualizările sunt în mod esențial fișiere HTML programate care întocmesc pagina cu datele dinamice.

Conceptele Rails ghidează dezvoltatorii să se bazeze pe rutarea RESTful. Acțiunile de control, în general, de ex. creați, editați, actualizați, distrugeți, afișați, indexați etc. Acestea permit utilizatorilor și sistemului să interacționeze cu diverse funcții

În mod colectiv, caracteristicile MVC ale Rails sunt numite Action Pack, adică ActionController, ActionView și ActiveRecord, acestea din urmă pentru interacțiunea cu baza de date.

Raul Hansson oferă o teologie principială în spatele cadrului numit Doctrina Ruby on Rails.

Doctrina Ruby on Rails

Doctrina Rails constă în opt principii:

  1. Optimizați-vă pentru fericirea programatorului: ori de câte ori este posibil, Ruby încearcă să satisfacă dorințele programatorului.
  2. Convenția asupra configurației: alegerea opțiunilor implicite standard, la nivelul platformei, face mai rapid și mai ușor pentru programatori să înceapă proiecte noi.
  3. Meniul este omakase: echipa din spatele Ruby on Rails a ales cele mai bune instrumente și abordări, iar toată lumea va fi mai fericită să le folosească.
  4. Nici o paradigmă: în cele din urmă Rails cuprinde soluții flexibile pentru diverse ocazii.
  5. Exalt cod frumos: un accent primar pe estetică și simplitate.
  6. Sisteme integrate de valoare: o orientare către o conștientizare și o coeziune completă a tuturor instrumentelor necesare pentru a construi aplicații și soluții.
  7. Progresul față de stabilitate: dorința de a-și asuma riscuri pentru a avansa platforma.
  8. Împingeți un cort mare: primiți o comunitate mare de participanți și vocile lor pentru a stabili viziunea.
Realizarea principală a lui Rails a fost să se unească și să cultive un trib puternic în jurul unui set larg de gânduri eretice cu privire la natura programării și a programatorilor. - David Heinemeier Hansson

Iată principalii contribuabili Rails (fondatorul David Hansson este în partea stângă sus):

Și au o comunitate caldă și primitoare:

  • Ruby on Rails: Discutați lista de discuții
  • Rubrica pe rafturi StackOverflow Q & A tag
  • Canalul IRC #rubyonrails pe irc.freenode.net
  • O conferință anuală RailsConf pentru întâlniri din lumea reală

Poate că sunteți interesat de scufundări în continuare, deci iată cum să începeți.

Noțiuni de bază cu Ruby on Rails

Rails are o colecție de documente remarcabile. Iată o privire la Ghidul de inițiere:

Ghidul vă oferă o introducere generală, o instalare de bază și o programare pentru începători Rails.

Instalarea Ruby pe șine

Utilizatorii Mac vor găsi Ruby preinstalat. Utilizatorii de Windows pot verifica RailsInstaller. Pentru o instalare completă a Rails pe OS X, ghidul recomandă Tokaido. Alternativ, Daniel Kehoe sugerează evitarea instalatorilor cu un clic și oferă instrucțiuni detaliate pentru instalarea Mac OS X El Capitan.

Experienți dezvoltatori Rails, de asemenea, raportează că face dezvoltarea aplicațiilor web mai distractiv. - Ghidul pentru șine

Cu toate acestea, a fost un timp de când am alerga Rails, și reinstalarea pe modelul meu târziu Mac pe El Capitan consumatoare de timp.

Verificați instalarea Ruby

Pe OS X, Ruby va fi preinstalat:

$ ruby ​​-v ruby ​​2.0.0p645 (2015-04-13 revizuire 50299) [universal.x86_64-darwin15]

Instalați cadrul Rails

Instalarea Rails mea a durat aproximativ 10-15 minute (să aveți răbdare):

$ sudo gem instalare șine Parola: Fetching: thread_safe-0.3.5.gem (100%) Instalat cu succes thread_safe-0.3.5 Fetching: tzinfo-1.2.2.gem (100%) Instalat cu succes tzinfo-1.2.2 Fetching: minitest -5.8.4.gem (100%) Instalat cu succes minitest-5.8.4 Fetching: activesupport-4.2.5.1.gem (100%) Instalat cu succes activesupport-4.2.5.1 Fetching: rack-1.6.4.gem (100%) Instalat cu succes rack-1.6.4 Fetching: rack-test-0.6.3.gem (100%) Instalat cu succes rack-test-0.6.3 Fetching: mini_portile2-2.0.0.gem (100%) Instalat cu succes mini_portile2-2.0. 0 Fetching: nokogiri-1.6.7.2.gem (100%) Construirea extensiilor native. Acest lucru ar putea dura ceva timp ... Instalat cu succes nokogiri-1.6.7.2 Fetching: loofah-2.0.3.gem (100%) Instalat cu succes loofah-2.0.3 Preluare: rails-html-sanitizer-1.0.3.gem (100%) Instalat cu succes rails-html-sanitizer-1.0.3 Fetching: rails-deprecated_sanitizer-1.0.3.gem (100%) Instalat cu succes rails-deprecated_sanitizer-1.0.3 %) Instalat cu succes rails-dom-testing-1.0.7 Fetching: builder-3.2.2.gem (100%) Instalat cu succes erubis- 2.7.0 Fetching: actionview-4.2.5.1.gem (100%) Instalat cu succes actionview-4.2.5.1 Fetching: actionpack-4.2.5.1.gem (100%) Instalat cu succes actionpack-4.2.5.1 Fetching: activemodel-4.2.5.1 .gem (100%) A fost instalat cu succes themodel-4.2.5.1 Fetching: arel-6.0.3.gem (100%) Instalat cu succes arel-6.0.3 Fetching: activerecord-4.2.5.1.gem (100% 4.2.5.1 Preluare: globalid-0. 3.6.gem (100%) Instalat cu succes globalid-0.3.6 Fetching: activejob-4.2.5.1.gem (100%) Instalat cu succes activjob-4.2.5.1 Fetching: MIME-types-2.99.gem (100% -types-2.99 Fetching: mail-2.6.3.gem (100%) Instalat cu succes mail-2.6.3 Fetching: actionmailer-4.2.5.1.gem (100%) Instalat cu succes actionmailer-4.2.5.1 Fetching: thor-0.19. 1.gem (100%) Instalat cu succes thor-0.19.1 Fetching: feroviare-4.2.5.1.gem (100%) Feroviar instalat cu succes-4.2.5.1 Fetching: bundler-1.11.2.gem (100% -1.11.2 Fetching: concurrent-ruby-1.0.0.gem (100%) Instalat cu succes concurrent-ruby-1.0.0 Fetching: sprockets-3.5.2.gem (100% sprockets-rails-3.0.1.gem (100%) Instalarea cu succes a pinionului-șine-3.0.1 Preluare: șine-4.2.5.1.gem (100%) Realizate cu succes a șinelor 4.2.5.1 Documentația parsarea fișierului thread_safe 0.3.5 Instalarea documentației ri pentru thread_safe-0.3.5 P documentație de arhivare pentru tzinfo-1.2.2 Instalarea documentației ri pentru tzinfo-1.2.2 Documentarea parsării pentru minitest-5.8.4 Instalarea documentației ri pentru minitest-5.8.4 Documentarea parsării pentru activesupport-4.2.5.1 nu poate converti "\ x84" din ASCII-8BIT la UTF-8 pentru lib / active_support / values ​​/ unicode_tables.dat, sărind peste instalarea documentației ri pentru activesupport-4.2.5.1 Documentația parsarea pentru rack-1.6.4 Instalarea documentației ri pentru rack-1.6.4 Documentația parsarea pentru rack- test-0.6.3 Instalarea documentației ri pentru rack-test-0.6.3 Documentația parsarea pentru mini_portile2-2.0.0 Instalarea documentației ri pentru mini_portile2-2.0.0 Parsarea documentației pentru nokogiri-1.6.7.2 incapabilă de a converti "\ xCA" din ASCII -8BIT la UTF-8 pentru lib / nokogiri / nokogiri.bundle, sărindă Instalarea documentației ri pentru nokogiri-1.6.7.2 Documentarea parsării pentru loofah-2.0.3 Instalarea documentației ri pentru loofah-2.0.3 Documentație parsare pentru rails-html-sanitizer -1.0.3 Instalarea documentației ri pentru rails-html-sanitizer-1.0.3 Documentația de analiză pentru șine-deprecated_sanitizer-1.0.3 Instalarea documentației ri pentru șine-deprecated_sanitizer-1.0.3 Documentație parsare pentru rails-dom-testing-1.0.7 Instalarea documentației ri pentru rails-dom -testarea-1.0.7 Documentația de analiză pentru constructor-3.2.2 Instalarea documentației ri pentru constructor-3.2.2 Documentarea parsării pentru erubis-2.7.0 Instalarea documentației ri pentru erubis-2.7.0 Documentarea parsării pentru acțiunea de vizualizare-4.2.5.1 Instalarea ri documentația pentru acțiunea de vizualizare-4.2.5.1 Documentația de analiză pentru actionpack-4.2.5.1 Instalarea documentației ri pentru actionpack-4.2.5.1 Documentația de parsare pentru modelul activ - 4.2.5.1 Instalarea documentației ri pentru modelul activ - 4.2.5.1 Documentarea parsării pentru arel-6.0.3 Instalarea ri documentare pentru arel-6.0.3 Documentația de analiză pentru activerecord-4.2.5.1 Instalarea documentației ri pentru activerecord-4.2.5.1 Documentarea parsării pentru globalid-0.3.6 Instalarea documentației ri pentru globalid-0.3.6 Parsarea doc - 4.2.5.1 Instalarea documentației ri pentru activejob-4.2.5.1 Documentația de parsare pentru tipurile de mime-2.99 Instalarea documentației ri pentru tipurile de mime-2.99 Documentația de parsare pentru mail-2.6.3 Instalarea documentației ri pentru mail-2.6.3 Parcurgerea documentatiei pentru Actionmailer-4.2.5.1 Instalarea documentatiei ri pentru Actionmailer-4.2.5.1 Documentatia de analiza pentru tor-0.19.1 Instalarea documentatiei ri pentru thor-0.19.1 Documentatia de parsing pentru feroviare-4.2.5.1 Instalarea documentatiei ri pentru feroviare-4.2. 5.1 Documentația de analiză pentru bundler-1.11.2 Instalarea documentației ri pentru bundler-1.11.2 Documentația de parsare pentru rubrica concurrent-1.0.0 Instalarea documentației ri pentru rubrica concurrent-1.0.0 Documentația de analiză a pinioanelor-3.5.2 Instalarea documentației ri pentru pinioane-3.5.2 Documentația parsarea pentru pinioane-șine-3.0.1 Instalarea documentației ri pentru pinioane-șine-3.0.1 Parsarea documentației pentru șine-4.2.5.1 imposibilitatea de a converti "\ xFF" de la ASCII-8BIT la UTF-8 f sau ghiduri / assets / images / akshaysurve.jpg, sărind peste "\ x89" din ASCII-8BIT în UTF-8 pentru ghidaje / assets / images / belongs_to.png, sărind peste "\ xF4" din ASCII-8BIT la UTF-8 pentru ghiduri / assets / images / book_icon.gif, sărind peste posibilitatea de a converti "\ x91" de la ASCII-8BIT la UTF-8 pentru ghiduri / assets / images / bullet.gif pentru a converti "\ x80" de la ASCII-8BIT la UTF-8 pentru ghiduri / assets / images / tab_yellow.gif, sărind peste "\ x89" din ASCII-8BIT în UTF-8 pentru ghidaje / assets / images / tab_yellow. png, sărind peste posibilitatea de a converti "\ xFF" de la ASCII-8BIT la UTF-8 pentru ghiduri / assets / images / vijaydev.jpg, sărindă Instalarea documentației ri pentru șine-4.2.5.1 31 pietre instalate

Dar, a funcționat:

$ șine - versiuni Rails 4.2.5.1 

Creați aplicația dvs. și instanța cadru

Apoi am creat o nouă aplicație numită blog:

$ rails new blog creare creare README.rdoc creare Rakefile creare config.ru creare .gitignore creare Gemfile creare aplicatie creare app / assets / javascripts / application.js creare app / assets / stylesheets / application.css creare app / controllers / application_controller.rb creati aplicatia / helpers / application_helper.rb creati aplicatia / views / layouts / application.html.erb crea aplicatia / images / images / .keep creati app / mailers / .keep creati app / models / .keep creați aplicații / modele / preocupări / .keep creați bin creați bin / bundle creați bin / rails creați bin / rake creați bin / setup creați config creați config / routes.rb crea config / application.rb crea config / environment.rb crea config / config / secrets.yml creare config / environments creare config / environments / development.rb creare config / environments / production.rb creare config / initializers / config / backtrace_silencers.rb crea config / initializers / cookies_seriali zer.rb creare config / initializers / filter_parameter_logging.rb creare config / initializers / inflections.rb creare config / initializers / mime_types.rb creare config / initializers / session_store.rb creare config / initializers / wrap_parameters.rb creare config / locales / en.yml creare config / boot.rb creare config / database.yml creare db creare db / seeds.rb creare lib creare lib / sarcini creare lib / tasks / .keep creare lib / assets creare lib / assets / .keep create log creare jurnal / .keep creare public creare public / 404.html creare public / 422.html creare public / 500.html creare public / favicon.ico creare public / robots.txt creare test / fixtures creare test / fixtures / .keep creare test / controlere creare test / controllers / .keep creare test / mailers creare test / mailers / .keep creare test / modele creare test / models / .keep creare test / helpers creare test / helpers / integrare / .keep creare test / test_helper.rb creare tmp / cache creare tmp / cache / assets creare furnizor / active / javascripts creare vendor / assets / javascripts / .keep creare vendor / assets / stylesheets creare furnizor / assets / stylesheets / .keep run bundle install Contul dvs. de utilizator nu are voie să instaleze în sistemul Rubygems. Puteți să anulați această instalare și să rulați: pachetul install -path vendor / bundle pentru a instala pietre în ./vendor/bundle/, sau puteți introduce parola și puteți instala pietrele incluse în Rubygems folosind sudo. Parola: Preluarea metadatelor de gem de la https://rubygems.org/... Preluarea metadatelor versiunii de la https://rubygems.org/... Preluarea metadatelor de dependență de la https://rubygems.org/... Rezolvarea dependențelor ... Rubygems 2.0.14 nu este threadsafe, astfel încât pietrele dvs. vor fi instalate unul câte unul. Treceți la Rubygems 2.1.0 sau o versiune superioară pentru a permite instalarea de bijuterii paralele. Instalarea rake 10.5.0 Utilizarea i18n 0.7.0 Instalarea json 1.8.3 cu extensiile native Folosind minitest 5.8.4 Utilizarea thread_safe 0.3.5 Utilizarea builder 3.2.2 Utilizarea erubis 2.7.0 Utilizarea mini_portile2 2.0.0 Utilizarea rack-ului 1.6.4 Utilizarea mime -types 2.99 Utilizarea arel 6.0.3 Instalarea debug_inspector 0.0.2 cu extensiile native Utilizarea pachetului 1.11.2 Instalarea byebug 8.2.2 cu extensiile native Instalarea sursei script-ului de cafea 1.10.0 Instalarea execjs 2.6.0 Utilizarea tor 0.19.1 Utilizarea concurrent -ruba 1.0.0 Instalarea multi_json 1.11.2 Instalarea sass 3.4.21 Instalarea tilt 2.0.2 Instalarea arcului 1.6.3 Instalarea sqlite3 1.3.11 cu extensiile native Instalarea rdoc 4.2.1 Utilizarea tzinfo 1.2.2 Utilizarea nokogiri 1.6.7.2 Folosirea rack-ului -test 0.6.3 Folosirea e-mail-ului 2.6.3 Instalarea link-ului_calculator 0.7.2 cu extensiile native Instalarea script-ului de cafea 2.4.1 Instalarea uglifierului 2.7.2 Utilizarea pinioanelor 3.5.2 Instalarea sdoc 0.4.1 Utilizarea activesupport 4.2.5.1 Utilizarea loofah 2.0.3 Utilizarea rails-deprecated_sanitizer 1.0.3 Utilizarea globalid 0.3.6 Utilizarea modelului activ 4.2.5.1 Instalarea programului jbuilder 2.4.0 Utilizarea rails-html-sanitizer 1.0.3 Utilizarea rails-dom-testing 1.0.7 Utilizarea activjob 4.2.5.1 Utilizarea activrecord 4.2.5.1 Utilizarea actionview 4.2.5.1 Utilizarea actionpack 4.2.5.1 Utilizarea actionmailer 4.2.5.1 Utilizarea șinelor 4.2.5.1 Utilizarea șinelor-troliu 3.0.1 Instalarea șinelor de cafea 4.1.1 Instalarea șinelor jquery 4.1.0 Utilizarea șinelor 4.2.5.1 Instalarea șinelor Sass 5.0.4 Instalarea consolei web 2.3.0 Instalarea turbolinks 2.5.3 Bundle complet! 12 dependente de Gemfile, 54 de pietre acum instalate. Utilizați "bundle show [gemname]" pentru a vedea unde este instalată o piatră prețioasă. Mesaj post-instalat de la rdoc: În funcție de versiunea rubinică, este posibil să fie necesar să instalați date ruby ​​rdoc / ri: <= 1.8.6 : unsupported = 1.8.7 : gem install rdoc-data; rdoc-data --install = 1.9.1 : gem install rdoc-data; rdoc-data --install >= 1.9.2: nimic de făcut! Ura! executați bundle exec spring binstub --all Avertisment: Utilizați Rubygems 2.0.14 cu Spring. Faceți upgrade la cel puțin Rubygems 2.1.0 și executați "gem pristine --all" pentru o performanță mai bună de pornire. * bin / rake: arc introdus * bin / șine: arc introdus

Puteți parcurge structura directorului cadru pentru aplicații web Rails din aplicația dvs.:

$ cd blog $ ls Gemfile Rakefile configurare lib test Gemfile.lock app config.ru log tmp README.rdoc bin db distribuitor public

Iată o viziune din ghidul Noțiuni introductive care arată modul în care Rails se bazează pe configurația convențională:

Lansați-vă serverul

În cele din urmă, puteți lansa serverul cu o linie de comandă:

server bin / rails Atenție: Utilizați Rubygems 2.0.14 cu Spring. Faceți upgrade la cel puțin Rubygems 2.1.0 și executați "gem pristine --all" pentru o performanță mai bună de pornire. => Booting WEBrick => Rails 4.2.5.1 aplicație care începe în curs de dezvoltare pe http: // localhost: 3000 => Run 'rails server -h' pentru mai multe opțiuni de pornire => Ctrl-C pentru server shutdown [2016-02-05 18 : 14: 05] INFO WEBrick 1.3.1 [2016-02-05 18:14:05] INFO ruby ​​2.0.0 (2015-04-13) [universal.x86_64-darwin15] [2016-02-05 18:14] : 05] INFO WEBrick :: HTTPServer # start: pid = 30576 port = 3000

Vizitați aplicația dvs.

În browser-ul dvs., accesați http: // localhost: 3000 și ar trebui să vedeți pagina de pornire implicită pentru o aplicație generică Rails:

Trebuie să spun, aș vrea ca toate astea să fie puțin mai curate. Acestea fiind spuse, există câteva resurse comunitare minunate pentru a vă ajuta să crească.

Mergând mai adânc

Iată un exemplu de ecran gratuit GoRails care acoperă arhitectura de bază a aplicațiilor-cadru afișată în directorul de mai sus:

Și ghidul Rails în sine vă plimbă printr-o serie de pași de început:

În general, există o mare varietate de tutoriale scrise și scripturi de acolo pentru a vă ghida.

În încheiere

Dacă sunteți intrigat de calitatea Ruby on Rails și a comunității sale, sper că ați găsit această introducere un punct de plecare utile. Poate că ați încercat chiar instalarea de mai sus.

Mai recent, sunt intrigat de aprovizionarea deschisă a Apple a lui Swift, un entuziast interesant în spațiul de limbaj de programare orientat obiect, asemănător cu Ruby, cu potențial similar pe termen lung pe Rails.

În timp ce am lucrat cu Rails în trecut, am avut de asemenea și lupte cu el, în special cu găzduirea și extinderea funcționalității - de asemenea, am găsit că este mai scump. Continuam sa fiu mai confortabil cu Yii, despre care puteti citi in seria noastra de programare Envato Tuts + Yii2. Și cu PHP 7 în curs de dezvoltare, viitorul pare mai rapid și mai strălucitor pentru cadrele de programare bazate pe PHP.

Dacă aveți întrebări, vă rugăm să le postați mai jos. Sau puteți să mă contactați pe Twitter @reifman. Vă rugăm să consultați pagina mea de instructor Envato Tuts + pentru a vedea alte tutoriale pe care le-am scris, cum ar fi Utilizarea Social Media pentru a localiza martori oculari, care evidențiază API-urile lui Instagram și Twitter.

Link-uri conexe

  • Ruby on Rails
  • Ruby on Rails (Wikipedia)
  • Urmați @Rails pe Twitter
  • Abonați-vă la această săptămână în Rails
  • Go Rails (sateliți și altele)
  • Limbajul de programare Ruby (Wikipedia)
  • Vizualizarea controlerului modelului (Wikipedia)
  • RailsConf
Cod