Hva er Ruby på Rails?

Bildekreditter: RubyonRails.org

En webutviklingsramme for purister

Tilbake i 1995 utgav Yukihiro Matsumoto Ruby 0.95 som et rent, objektorientert (OO), generelle programmeringsspråk:

Som språkmaniac og OO fan i 15 år ønsket jeg virkelig et ekte objektorientert, brukervennlig skriptspråk. Jeg så etter, men kunne ikke finne en. Så jeg bestemte meg for å gjøre det. - Y. Matsumoto

Så i 2004 utgav David Heinemeier Hansson den første versjonen av Ruby on Rails som et webapplikasjonsramme som han pleide å lansere sin team management application Basecamp. Han åpnet hentet Ruby on Rails i 2005, og Apple lanserte den med OS X Leopard i 2007.

For denne opplæringen refererer jeg til Ruby on Rails som Rails for short; Noen bruker også RoR.

Rails brukes av et bredt utvalg av populære webprogrammer du kanskje kjenner, for eksempel GitHub, Shopify, Airbnb, Twitch, SoundCloud, Hulu, Zendesk, Square og Highrise. Det har imidlertid blitt kritisert for skalerbarhetsbegrensninger, spesielt med Twitter, som gradvis måtte flytte mange av sine tjenester til andre plattformer. Når det er sagt, Twitter har høye transaksjonsrater og skalerbarhetsutfordringer.

I denne opplæringen svarer jeg på spørsmålet "Hva er Ruby on Rails?" og introdusere deg til det grunnleggende i programmeringsrammen for å hjelpe deg med å eksperimentere med det.

Før vi begynner, vær så snill og husk, jeg deltar i diskusjonene nedenfor. Hvis du har et spørsmål eller et emneforslag, vennligst legg inn en kommentar nedenfor eller kontakt meg på Twitter @ reifman. 

Hva er Ruby på Rails?

Ruby on Rails er et populært, open-source, objektorientert webutviklingsramme som brukes av mange programmerere og applikasjonsleverandører. Det er også basert på en modellvisningskontroll (MVC) tilnærming.

Modeller kartlegger databasene og funksjonaliteten til et objekt i applikasjonen, for eksempel brukere. Rails gir en standardkonvensjon for navngivning og filkatalogstrukturer, noe som forenkler programmering, men gir også automatiserte løsninger for å bygge funksjonalitet, kalt stillas. Det sikrer også et felles miljø for utviklere å jobbe sammen og dra nytte av hverandres innsats.

Optimalisering for programmererlykke med konvensjon over konfigurasjon er hvordan vi ruller.

Kontrolleren administrerer forespørsler primært mellom brukeren og serveren, samler data fra modeller og returnerer den til brukeren gjennom Se filer.

Visninger er i hovedsak programmatiske HTML-filer som legger ut siden med dynamiske data.

Rails-konvensjoner veileder utviklere for å stole på RESTful ruting. Kontrollerhandlinger generelt, f.eks. nye, opprette, redigere, oppdatere, ødelegge, vise, indeksere, etc. Dette er det som tillater brukere og systemet å samhandle med ulike funksjoner

Samlet sett kalles MVC-funksjonene til Rails Action Pack, dvs. ActionController, ActionView og ActiveRecord, sistnevnte for å samhandle med databasen.

Rails grunnlegger Hansson gir en grunnleggende teologi bak rammen kalt The Ruby on Rails Doctrine.

Ruby on Rails Doctrine

Rails doktrinen består av åtte prinsipper:

  1. Optimaliser for programmererens lykke: Når det er mulig, forsøker Ruby å møte programmernes ønsker.
  2. Konvensjon over konfigurasjon: Valg av standard, plattform-brede standardvalg gjør det raskere og lettere for programmerere å komme i gang på nye prosjekter.
  3. Menyen er omakase: teamet bak Ruby on Rails har valgt de beste verktøyene og tilnærmingene, og alle vil bli lykkeligere med dem.
  4. Ingen paradigme: Til slutt omfavner Rails fleksible løsninger for ulike anledninger.
  5. Exalt vakker kode: et primært fokus på estetikk og enkelhet.
  6. Verdiintegrerte systemer: En orientering mot fullstendig bevissthet og sammenheng mellom alle verktøyene som trengs for å bygge applikasjoner og løsninger.
  7. Fremgang over stabilitet: en vilje til å ta risiko for å flytte plattformen fremover.
  8. Skyv opp et stort telt: Velkommen et stort fellesskap av deltakere og deres stemmer for å sette visjonen.
Den viktigste prestasjonen av Rails var å forene og dyrke en sterk stamme rundt et bredt sett av kjente tanker om natur programmering og programmerere. - David Heinemeier Hansson

Her er de primære Rails-bidragsyterne for tiden (grunnlegger David Hansson er øverst til venstre):

Og de har et varmt og innbydende samfunn:

  • Ruby on Rails: Snakk e-postliste
  • Ruby on Rails StackOverflow Spørsmål & Svar
  • Den #rubyonrails IRC kanal på irc.freenode.net
  • En årlig RailsConf-konferanse for ekte verdensmøter

Kanskje du er interessert i dykking i ytterligere, så her er hvordan du kommer i gang.

Komme i gang med Ruby on Rails

Rails har en samling av fremragende dokumentasjon. Her er en titt på startveiledningen:

Guiden går gjennom en generell introduksjon, grunnleggende installasjon og noen nybegynnere Rails programmering.

Installere Ruby on Rails

Mac-brukere vil finne Ruby forhåndsinstallert. Windows-brukere kan sjekke ut RailsInstaller. For en full Rails-installasjon på OS X, anbefaler guiden Tokaido. Alternativt foreslår Daniel Kehoe å unngå installasjoner med ett klikk og gir detaljerte instruksjoner for Mac OS X El Capitan installasjon.

Erfarne Rails-utviklere rapporterer også at det gjør det enklere for webapplikasjonen. - Rails Guide

Men det hadde vært en stund siden jeg skulle kjøre Rails, og installere den på min siste modell. Mac på El Capitan var tidkrevende.

Bekreft installasjonen av Ruby

På OS X vil Ruby være forhåndsinstallert:

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

Installer Rails Framework

Installasjonen min Rails tok omtrent 10 til 15 minutter (vær tålmodig):

$ sudo perle installasjonsskinner Passord: Henting: thread_safe-0.3.5.gem (100%) Vellykket installert thread_safe-0.3.5 Henting: tzinfo-1.2.2.gem (100%) Vellykket installert tzinfo-1.2.2 Henting: minitest -5.8.4.gem (100%) Vellykket installert minitest-5.8.4 Henting: activesupport-4.2.5.1.gem (100%) Vellykket installert aktivesupport-4.2.5.1 Henting: rack-1.6.4.gem (100%) Installert etter rack-1.6.4: rack-test-0.6.3.gem (100%) Installert racktest-0.6.3: Hent: mini_portile2-2.0.0.gem (100%) Vellykket installert mini_portile2-2.0. 0 Henting: nokogiri-1.6.7.2.gem (100%) Bygg oppbygginger. Dette kan ta en stund ... Vellykket installert nokogiri-1.6.7.2 Henting: loofah-2.0.3.gem (100%) Vellykket installert loofah-2.0.3 Henting: rails-html-sanitizer-1.0.3.gem (100%) Installert rails-html-sanitizer-1.0.3. Hent: rails-deprecated_sanitizer-1.0.3.gem (100%) Vellykket installert rails-deprecated_sanitizer-1.0.3 Henter: rails-dom-testing-1.0.7.gem (100 %) Vellykket installert rails-dom-testing-1.0.7 Henter: builder-3.2.2.gem (100%) Vellykket installert builder-3.2.2 Henting: erubis-2.7.0.gem (100%) Vellykket installert erubis- 2.7.0 Hent: actionview-4.2.5.1.gem (100%) Installert actionview-4.2.5.1. Hent: actionpack-4.2.5.1.gem (100%) Successfully installert actionpack-4.2.5.1 Henting: aktivemodel-4.2.5.1 .gem (100%) Vellykket installert activemodel-4.2.5.1 Henting: arel-6.0.3.gem (100%) Vellykket installert arel-6.0.3 Henting: aktiviverecord-4.2.5.1.gem (100%) Vellykket installert aktivitetsord- 4.2.5.1 Henting: globalid-0. 3.6.gem (100%) Vellykket installert globalid-0.3.6 Hent: activejob-4.2.5.1.gem (100%) Vellykket installert activejob-4.2.5.1 Henting: mime-types-2.99.gem (100%) Vellykket installert mime -types-2,99 Henting: mail-2.6.3.gem (100%) Vellykket installert post-2.6.3 Henting: actionmailer-4.2.5.1.gem (100%) Successfully installert actionmailer-4.2.5.1 Henting: thor-0.19. 1.gem (100%) Vellykket installert thor-0.19.1 Henter: railties-4.2.5.1.gem (100%) Installert railties-4.2.5.1 Hent: bundler-1.11.2.gem (100%) Vellykket installert bundler -1.11.2 Hent: Samtidig-ruby-1.0.0.gem (100%) Installert suksessivt samtidig Ruby-1.0.0 Henting: Sprockets-3.5.2.gem (100%) Vellykket installert tannhjul-3.5.2 Henting: tannhjul-rails-3.0.1.gem (100%) Vellykket installert tannhjul-rails-3.0.1 Henting: rails-4.2.5.1.gem (100%) Vellykket installerte skinner-4.2.5.1 Parsing dokumentasjon for thread_safe-0.3.5 Installere ri-dokumentasjon for thread_safe-0.3.5 P arsing dokumentasjon for tzinfo-1.2.2 Installere ri dokumentasjon for tzinfo-1.2.2 Parsing dokumentasjon for minitest-5.8.4 Installere ri dokumentasjon for minitest-5.8.4 Parsing dokumentasjon for activesupport-4.2.5.1 kan ikke konvertere "\ x84" fra ASCII-8BIT til UTF-8 for lib / active_support / values ​​/ unicode_tables.dat, hopper Installere ri-dokumentasjon for aktivesupport-4.2.5.1 Parsing-dokumentasjon for rack-1.6.4 Installere ri-dokumentasjon for rack-1.6.4 Parsing-dokumentasjon for rack- test-0.6.3 Installere ri-dokumentasjon for rack-test-0.6.3 Parsing-dokumentasjon for mini_portile2-2.0.0 Installere ri-dokumentasjon for mini_portile2-2.0.0 Parsing-dokumentasjon for nokogiri-1.6.7.2 kan ikke konvertere "\ xCA" fra ASCII -8BIT til UTF-8 for lib / nokogiri / nokogiri.bundle, hopper Installering av ri-dokumentasjon for nokogiri-1.6.7.2 Parsing-dokumentasjon for loofah-2.0.3 Installering av ri-dokumentasjon for loofah-2.0.3 Parsing-dokumentasjon for rails-html-sanitizer -1.0.3 Installere ri dokumentasjon for rails-html-sanitizer-1.0.3 Parsing-dokumentasjon for rails-deprecated_sanitizer-1.0.3 Installering av ri-dokumentasjon for rails-deprecated_sanitizer-1.0.3 Parsing-dokumentasjon for rails-dom-testing-1.0.7 Installering av ri-dokumentasjon for rails-dom -testing-1.0.7 Parsing dokumentasjon for byggherre-3.2.2 Installere ri dokumentasjon for byggeren-3.2.2 Parsing dokumentasjon for erubis-2.7.0 Installere ri dokumentasjon for erubis-2.7.0 Parsing dokumentasjon for actionview-4.2.5.1 Installere ri dokumentasjon for actionview-4.2.5.1 Parsing dokumentasjon for actionpack-4.2.5.1 Installering av ri dokumentasjon for actionpack-4.2.5.1 Parsing dokumentasjon for aktivemodel-4.2.5.1 Installering av ri dokumentasjon for aktivemodel-4.2.5.1 Parsing dokumentasjon for arel-6.0.3 Installering ri dokumentasjon for arel-6.0.3 Parsing dokumentasjon for aktiviserecord-4.2.5.1 Installere ri dokumentasjon for aktiviverecord-4.2.5.1 Parsing dokumentasjon for globalid-0.3.6 Installere ri dokumentasjon for globalid-0.3.6 Parsing doc umentation for activejob-4.2.5.1 Installere ri-dokumentasjon for activejob-4.2.5.1 Parsing-dokumentasjon for mime-typer-2.99 Installere ri-dokumentasjon for mime-typer-2.99 Parsing-dokumentasjon for post-2.6.3 Installere ri-dokumentasjon for post-2.6.3 Parsing dokumentasjon for actionmailer-4.2.5.1 Installere ri dokumentasjon for actionmailer-4.2.5.1 Parsing dokumentasjon for thor-0.19.1 Installere ri dokumentasjon for thor-0.19.1 Parsing dokumentasjon for railties-4.2.5.1 Installere ri dokumentasjon for railties-4.2. 5.1 Parsing-dokumentasjon for bundler-1.11.2 Installering av ri-dokumentasjon for bundler-1.11.2 Parsing-dokumentasjon for samtidig ruby-1.0.0 Installering av ri-dokumentasjon for samtidig ruby-1.0.0 Parsing-dokumentasjon for kjedehjul-3.5.2 Installering av ri-dokumentasjon for tannhjul-3.5.2 Parsing-dokumentasjon for tannhjul-rails-3.0.1 Installering av ri-dokumentasjon for tannhjul-rails-3.0.1 Parsing-dokumentasjon for skinner-4.2.5.1 kan ikke konvertere "\ xFF" fra ASCII-8BIT til UTF-8 f eller guider / eiendeler / bilder / akshaysurve.jpg, hopper ikke i stand til å konvertere "\ x89" fra ASCII-8BIT til UTF-8 for guider / eiendeler / images / belong_to.png, hopper ikke i stand til å konvertere "\ xF4" fra ASCII-8BIT til UTF-8 for guider / eiendeler / bilder / book_icon.gif, hopper ikke i stand til å konvertere "\ x91" fra ASCII-8BIT til UTF-8 for guider / eiendeler / bilder / bullet.gif, hopper over ... fortsetter om og om ... ute å konvertere "\ x80" fra ASCII-8BIT til UTF-8 for guider / eiendeler / bilder / tab_yellow.gif, hopper ikke i stand til å konvertere "\ x89" fra ASCII-8BIT til UTF-8 for guider / eiendeler / bilder / tab_yellow. png, hopper ikke i stand til å konvertere "\ xFF" fra ASCII-8BIT til UTF-8 for guider / eiendeler / bilder / vijaydev.jpg, hopper Installere ri-dokumentasjon for rails-4.2.5.1 31 perler installert

Men det virket:

$ skinner - versjon Rails 4.2.5.1 

Opprett søknad og rammeverk

Da opprettet jeg et nytt program kalt blogg:

$ skinner ny blogg skape lage README.rdoc lage Rakefile lage config.ru create .gitignore lage Gemfile lage app lage app / assets / javascripts / application.js lage app / assets / stylesheets / application.css lage app / controllers / application_controller.rb lage app / helpers / application_helper.rb lage app / visninger / layouts / application.html.erb lage app / assets / images / .keep lage app / mailers / .keep lage app / models / .keep lage app / controllers / concerns / .keep lage app / modeller / bekymringer / .keep lage bin lage bin / bunt lage bin / skinner lage bin / rake lage bin / oppsett lage config lage config / routes.rb lage config / application.rb lage config / environment.rb opprette config / secrets.yml lage config / environments lage config / environments / development.rb lage config / environments / production.rb lage config / environments / test.rb lage config / initializers lage config / initializers / assets.rb lage config / initializers / backtrace_silencers.rb opprette config / initializers / cookies_seriali zer.rb lage config / initializers / filter_parameter_logging.rb lage config / initializers / inflections.rb lage config / initializers / mime_types.rb lage config / initializers / session_store.rb lage config / initializers / wrap_parameters.rb lage config / locales lage config / locales / en.yml lage config / boot.rb lage config / database.yml lage db lage db / seeds.rb lage lib lage lib / oppgaver lage lib / oppgaver / .keep lage lib / eiendeler lage lib / assets / .keep opprette logg opprett logg / .keep Opprett offentlig opprett offentlig / 404.html Opprett offentlig / 422.html Opprett offentlig / 500.html Opprett offentlig / favicon.ico Opprett offentlig / robots.txt Opprett test / Inventar Opprett test / Inventar /. test / kontroller skape test / kontroller / .keep lag test / mailers skape test / mailers / .keep lage test / modeller lage test / modeller / .keep lage test / helpers lage test / helpers / .keep lage test / integrasjon lage test / integrasjon / .keep opprette test / test_helper.rb opprett tmp / cache opprett tmp / cache / eiendeler skape leverandør / eiendeler / javascripts lager leverandør / eiendeler / javascripts / .keep opprette leverandør / eiendeler / stylesheets opprette leverandør / eiendeler / stylesheets / .keep run bundle installasjon Din brukerkonto er ikke tillatt å installere til systemet Rubygems. Du kan avbryte denne installasjonen og kjøre: pakke installasjonsveiledning / pakke for å installere edelstenene i ./vendor/bundle/, eller du kan skrive inn passordet ditt og installere de medfølgende perlene til Rubygems ved hjelp av sudo. Passord: Henting av perle metadata fra https://rubygems.org/... Henter versjon metadata fra https://rubygems.org/... Henter avhengighetsmetadata fra https://rubygems.org/... Løse avhengigheter ... Rubygems 2.0.14 er ikke threadsafe, så edelstenene dine vil bli installert en om gangen. Oppgrader til Rubygems 2.1.0 eller høyere for å aktivere parallell perleinstallasjon. Installere rake 10.5.0 Bruke i18n 0.7.0 Installere json 1.8.3 med native extensions Bruke minitest 5.8.4 Bruke thread_safe 0.3.5 Bruke byggeren 3.2.2 Bruke erubis 2.7.0 Bruke mini_portile2 2.0.0 Bruke rack 1.6.4 Bruke mime -typene 2,99 Bruke arel 6.0.3 Installere debug_inspector 0.0.2 med native extensions Bruk bundler 1.11.2 Installere byebug 8.2.2 med native extensions Installere kaffeskript-kilde 1.10.0 Installere execjs 2.6.0 Bruke thor 0.19.1 Bruke samtidig -ruby 1.0.0 Installere multi_json 1.11.2 Installere sass 3.4.21 Installere tilt 2.0.2 Installere fjær 1.6.3 Installere sqlite3 1.3.11 med innfødte utvidelser Installere rdoc 4.2.1 Bruke tzinfo 1.2.2 Bruke nokogiri 1.6.7.2 Bruke rack -test 0.6.3 Bruke post 2.6.3 Installere binding_of_caller 0.7.2 med innfødte utvidelser Installere kaffeskript 2.4.1 Installere glødelegger 2.7.2 Bruke kjedehjul 3.5.2 Installere sdoc 0.4.1 Bruke aktivitetsstøtte 4.2.5.1 Bruke loofah 2.0.3 Bruke skinner-deprecated_sanitizer 1.0.3 Bruke globalid 0.3.6 Bruke aktivemodel 4.2.5.1 Installere jbuilder 2.4.0 Bruke rails-html-sanitizer 1.0.3 Bruke rails-dom-testing 1.0.7 Bruke aktivjob 4.2.5.1 Bruke aktivitetsord 4.2.5.1 Bruke handlingsvisning 4.2.5.1 Bruke actionpack 4.2.5.1 Bruke actionmailer 4.2.5.1 Bruke rangerier 4.2.5.1 Bruke kjedehjul 3.0.1 Installere rullejern 4.1.1 Installere rullejern 4.1.0 Bruke rister 4.2.5.1 Installere rullejern 5.0.4 Installere webkonsoll 2.3.0 Installere turbolinker 2.5.3 Bundle komplett! 12 Gemfile avhengigheter, 54 edelstener nå installert. Bruk 'bunt show [gemname]' for å se hvor en bunte perle er installert. Post-installasjonsmelding fra rdoc: Avhengig av din versjon av rubin, må du kanskje installere ruby ​​rdoc / ri data: <= 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: ingenting å gjøre! Jippi! løp bunke exec våren binstub --all Advarsel: Du bruker Rubygems 2.0.14 med våren. Oppgrader til minst Rubygems 2.1.0 og kjør "perle pristine - all" for bedre oppstart. * bin / rake: fjær satt inn * kasse / skinner: fjær satt inn

Du kan bla gjennom Rails webapplikasjon rammestrukturstruktur i søknaden din:

$ cd blogg $ ls Gemfile Rakefile config lib test Gemfile.lock app config.ru logg tmp README.rdoc bin db offentlig leverandør

Her er en visning fra Komme i gang-veiledningen som viser hvordan Rails bygger på konvensjon over konfigurasjon:

Start serveren din

Til slutt kan du starte serveren din med en kommandolinje:

$ bin / rails server Advarsel: Du bruker Rubygems 2.0.14 med våren. Oppgrader til minst Rubygems 2.1.0 og kjør "perle pristine - all" for bedre oppstart. => Oppstart WEBrick => Rails 4.2.5.1 applikasjon som starter i utvikling på http: // localhost: 3000 => Kjør 'rails server -h' for flere oppstartsalternativer => Ctrl-C til shutdown server [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

Besøk søknaden din

I nettleseren din, gå til http: // localhost: 3000, og du bør se standard hjemmesiden for et generisk Rails-program:

Jeg må si, jeg skulle ønske alt dette var litt renere. Når det er sagt, er det noen fantastiske samfunnsressurser for å hjelpe deg med å vokse.

Går dypere

Her er et eksempel på en gratis GoRails-skjermbilde som dekker den grunnleggende rammeapplikasjonsarkitekturen som vises i katalogen ovenfor:

Og Rails Guide selv går deg gjennom en rekke begynnelsestrinn:

Samlet sett er det et bredt utvalg av skriftlige og screencast opplæringsprogrammer der ute for å veilede deg.

I Avslutning

Hvis du er fascinert av kvaliteten på Ruby on Rails og samfunnet, håper jeg at du har funnet denne introduksjonen et nyttig utgangspunkt. Kanskje du har prøvd installasjonen ovenfor.

Senere er jeg fascinert av Apples åpne innkjøp av Swift, en spennende aktør i det objektorienterte programmeringsspråket, som er relatert til Ruby med lignende langsiktige potensial til Rails.

Mens jeg tidligere har jobbet med Rails, har jeg også slitt med det, spesielt med hosting og utvidelse av funksjonalitet - jeg har også funnet hosting det dyrere. Jeg fortsetter å være mest komfortabel med Yii, som du kan lese om i vår Envato Tuts + Yii2 Programmeringsserie. Og med PHP 7 som kommer frem, ser fremtiden frem raskere og lysere for PHP-baserte programmeringsrammer.

Hvis du har spørsmål, vennligst legg inn dem nedenfor. Eller du kan kontakte meg på Twitter @ reifman. Vennligst sjekk ut min Envato Tuts + instruktørside for å se andre opplæringsprogrammer jeg har skrevet, for eksempel Bruk av sosiale medier for å finne øyenvitner, som fremhever APIene til Instagram og Twitter.

Relaterte linker

  • Ruby on Rails
  • Ruby on Rails (Wikipedia)
  • Følg @Rails på Twitter
  • Abonner på denne uken i Rails
  • Go Rails (screencasts og mer)
  • Ruby Programming Language (Wikipedia)
  • Model View Controller (Wikipedia)
  • RailsConf