Vad är Ruby på Rails?

Bildkrediter: RubyonRails.org

En webbutvecklingsram för purister

Tillbaka 1995 släppte Yukihiro Matsumoto Ruby 0.95 som ett rent, objektorienterat (OO), allmänt programmerat språk:

Som språket maniac och OO-fan i 15 år ville jag verkligen ha ett genuint objektorienterat, lättanvänt skriptspråk. Jag letade efter men kunde inte hitta en. Så jag bestämde mig för att göra det. - Y. Matsumoto

Sedan 2004 släppte David Heinemeier Hansson den första versionen av Ruby on Rails som en webbapplikationsram som han lanserade sin teamhanteringsapplikation Basecamp. Han öppnade Ruby on Rails 2005, och Apple släppte det med OS X Leopard 2007.

För denna handledning hänvisar jag till Ruby on Rails som Rails för kort; vissa människor använder också RoR.

Rails används av en mängd olika populära webbapplikationer som du kanske vet, till exempel GitHub, Shopify, Airbnb, Twitch, SoundCloud, Hulu, Zendesk, Square och Highrise. Det har dock kritiserats för begränsningar för skalbarhet, framförallt med Twitter, som gradvis var tvungen att flytta många av sina tjänster till andra plattformar. Med det sagt, Twitter har höga transaktionsräntor och skalbarhetsutmaningar.

I den här handledningen svarar jag på frågan "Vad är Ruby on Rails?" och presentera dig för grunderna i programmeringsramen för att hjälpa dig att experimentera med det.

Innan vi börjar, kom ihåg, jag deltar i diskussionerna nedan. Om du har en fråga eller ett ämnesförslag, vänligen skriv en kommentar nedan eller kontakta mig på Twitter @ reifman. 

Vad är Ruby på Rails?

Ruby on Rails är en populär, öppen källkod, objektorienterad webbutvecklingsram som används av många programmerare och applikationsleverantörer. Det bygger också på en modellvisningskontroll (MVC).

Modeller kartlägger databaser och funktionalitet till ett objekt i applikationen, som användare. Rails ger en standardkonvention för namngivning och filkatalogstrukturer, vilket förenklar programmeringen men ger även automatiserade lösningar för att bygga funktionalitet, kallad ställning. Det säkerställer också en gemensam miljö för utvecklare att arbeta tillsammans och dra nytta av varandras ansträngningar.

Optimering för programmerarens lycka med Konventionen över konfiguration är hur vi rullar.

Controller hanterar förfrågningar primärt mellan användaren och servern, samlar data från modeller och returnerar den till användaren genom att titta på filer.

Visningar är i huvudsak programmatiska HTML-filer som lägger ut sidan med dynamiska data.

Rails konventioner styr utvecklare att förlita sig på RESTful routing. Controller handlingar i allmänhet t.ex. nya, skapa, redigera, uppdatera, förstöra, visa, index, etc. Det här är det som tillåter användare och systemet att interagera med olika funktioner

Sammantaget kallas MVC-funktionerna i Rails Action Pack, dvs ActionController, ActionView och ActiveRecord, den senare för att interagera med databasen.

Rails grundare Hansson ger en principiell teologi bakom ramen som heter The Ruby on Rails Doctrine.

Ruby on Rails Doctrine

Rails doktrinen består av åtta principer:

  1. Optimera för programmerarens lycka: När det är möjligt försöker Ruby att uppfylla programmerarens önskningar.
  2. Konventionen över konfiguration: Val av standard, plattformsövergripande standardval gör det snabbare och enklare för programmerare att komma igång med nya projekt.
  3. Menyn är omakas: laget bakom Ruby on Rails har valt de bästa verktygen och tillvägagångssätten, och alla kommer att vara lyckligare att använda dem.
  4. Inget paradigm: i slutändan omfattar Rails flexibla lösningar vid olika tillfällen.
  5. Exalt vacker kod: ett primärt fokus på estetik och enkelhet.
  6. Värdeintegrerade system: en inriktning mot fullständig medvetenhet och sammanhållning av alla verktyg som behövs för att bygga applikationer och lösningar.
  7. Framsteg över stabilitet: en vilja att ta risker för att flytta plattformen framåt.
  8. Tryck upp ett stort tält: välkomna en stor grupp av deltagare och deras röster för att sätta visionen.
Den främsta prestationen av Rails var att förena och odla en stark stam runt en bred uppsättning kätterska tankar om typen av programmering och programmerare. - David Heinemeier Hansson

Här är de primära Rails bidragsgivare för närvarande (grundare David Hansson är uppe till vänster):

Och de har en varm och välkomnande gemenskap:

  • Ruby on Rails: Prata e-postlista
  • Ruby on Rails StackOverflow Q & A-tagg
  • #Rubyonrails IRC kanal på irc.freenode.net
  • En årlig RailsConf-konferens för verkliga världsmöten

Kanske är du intresserad av att dyka vidare, så här är hur du kommer igång.

Komma igång med Ruby på Rails

Rails har en samling av enastående dokumentation. Här är en titt på Komma igångsguiden:

Guiden styr dig genom en allmän introduktion, grundläggande installation och lite nybörjare Rails programmering.

Installera Ruby på Rails

Mac-användare kommer att hitta Ruby förinstallerad. Windows-användare kan kolla RailsInstaller. För en fullständig Rails-installation på OS X rekommenderar guiden Tokaido. Alternativt föreslår Daniel Kehoe att man undviker installationsprogram för en klick och tillhandahåller detaljerade instruktioner för installationen av Mac OS X El Capitan.

Experierade Rails-utvecklare rapporterar också att det gör programutvecklingen roligare. - Rails Guide

Men det hade varit ett tag sedan jag körde Rails och installerar om det på min sena modell Mac på El Capitan var tidskrävande.

Verifiera installationen av Ruby

På OS X kommer Ruby att vara förinstallerat:

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

Installera Rails Framework

Min Rails-installation tog cirka 10 till 15 minuter (var tålmodig):

$ sudo pärla installationsskenor Lösenord: Hämtning: thread_safe-0.3.5.gem (100%) Installerat successfully thread_safe-0.3.5 Hämta: tzinfo-1.2.2.gem (100%) Installerad tzinfo-1.2.2 Installerat framgångsrikt: minitest -5.8.4.gem (100%) Installerad minitest-5.8.4 Hämtning: activesupport-4.2.5.1.gem (100%) Successfully installed activesupport-4.2.5.1 Hämtning: rack-1.6.4.gem (100%) Installerat successivt rack-1.6.4 Hämtning: rack-test-0.6.3.gem (100%) Installerat racktest-0.6.3. Hämtning: mini_portile2-2.0.0.gem (100%) Installerat framgångsrikt mini_portile2-2.0. 0 Hämta: nokogiri-1.6.7.2.gem (100%) Bygga inbyggda tillägg. Det kan ta en stund ... Installerat framgångsrikt nokogiri-1.6.7.2 Hämta: loofah-2.0.3.gem (100%) Installerat framgångsrikt loofah-2.0.3 Hämta: rails-html-sanitizer-1.0.3.gem (100%) Installerat successivt rails-html-sanitizer-1.0.3 Hämtning: rails-deprecated_sanitizer-1.0.3.gem (100%) Installerat rails-deprecated_sanitizer-1.0.3. Hämtning: rails-dom-testing-1.0.7.gem (100 %) Installerat framgångsrikt rails-dom-testing-1.0.7 Hämtar: builder-3.2.2.gem (100%) Installerat byggmästare-3.2.2 Hämta: erubis-2.7.0.gem (100%) Installerat framgångsrikt med erubis- 2.7.0 Hämta: actionview-4.2.5.1.gem (100%) Inställd actionview-4.2.5.1 Hämtning: actionpack-4.2.5.1.gem (100%) Inställd actionpack-4.2.5.1. Hämtning: aktivemodel-4.2.5.1 .gem (100%) Successfully installed activemodel-4.2.5.1 Hämtar: arel-6.0.3.gem (100%) Installerat framgångsrikt arel-6.0.3 Hämtning: activiverecord-4.2.5.1.gem (100%) Successfully installed activiverecord- 4.2.5.1 Hämtning: globalid-0. 3.6.gem (100%) Installerat framgångsrikt globalid-0.3.6 Hämta: activejob-4.2.5.1.gem (100%) Installerat framgångsrikt activejob-4.2.5.1 Hämtning: mime-types-2.99.gem (100%) -typ-2,99 Hämta: mail-2.6.3.gem (100%) Installerat post-2.6.3 Hämta: actionmailer-4.2.5.1.gem (100%) Inställd actionmailer-4.2.5.1 Hämtning: thor-0.19. 1.gem (100%) Installerat framgångsrikt thor-0.19.1 Hämtning: railties-4.2.5.1.gem (100%) Inställda raderier-4.2.5.1 Hämtning: bundler-1.11.2.gem (100%) -1.11.2 Hämtning: simultant-ruby-1.0.0.gem (100%) Installerat framgångsrikt samtidigt ruby-1.0.0 Hämtning: kedjehjul-3.5.2.gem (100%) Installerat kedjehjul-3.5.2. Hämtning: kugghjuls-rails-3.0.1.gem (100%) Installerat kugghjul-3.0.1 Hämtning: rails-4.2.5.1.gem (100%) Installationsskenor som är framgångsrika-4.2.5.1 Parsing-dokumentation för thread_safe-0.3.5 Installera ri-dokumentation för thread_safe-0.3.5 P arsing dokumentation för tzinfo-1.2.2 Installera ri dokumentation för tzinfo-1.2.2 Parsing dokumentation för minitest-5.8.4 Installera ri dokumentation för minitest-5.8.4 Parsing dokumentation för activesupport-4.2.5.1 kan inte konvertera "\ x84" från ASCII-8BIT till UTF-8 för lib / active_support / values ​​/ unicode_tables.dat, hoppa över Installera ri-dokumentation för activesupport-4.2.5.1 Analys av dokumentation för rack-1.6.4 Installera ri-dokumentation för rack-1.6.4 Analys av dokumentation för rack- test-0.6.3 Installera ri-dokumentation för racktest-0.6.3 Analys av dokumentation för mini_portile2-2.0.0 Installera ri-dokumentation för mini_portile2-2.0.0 Analys av dokumentation för nokogiri-1.6.7.2 kan inte konverteras "\ xCA" från ASCII -8BIT till UTF-8 för lib / nokogiri / nokogiri.bundle, hoppa över Installera ri-dokumentation för nokogiri-1.6.7.2 Analysera dokumentation för loofah-2.0.3 Installera ri-dokumentation för loofah-2.0.3 Analys av dokumentation för rails-html-sanitizer -1.0.3 Installera ri-dokumentation för rails-html-sanitizer-1.0.3 Parsing-dokumentation för rails-deprecated_sanitizer-1.0.3 Installera ri-dokumentation för rails-deprecated_sanitizer-1.0.3 Analys av dokumentation för rails-dom-testing-1.0.7 Installera ri-dokumentation för rails-dom -testing-1.0.7 Analysera dokumentation för byggaren-3.2.2 Installera ri-dokumentation för byggmästare-3.2.2 Analysera dokumentation för erubis-2.7.0 Installera ri-dokumentation för erubis-2.7.0 Analysera dokumentation för actionview-4.2.5.1 Installera ri dokumentation för actionview-4.2.5.1 Analysera dokumentation för actionpack-4.2.5.1 Installera ri-dokumentation för actionpack-4.2.5.1 Analysera dokumentation för aktivmodell-4.2.5.1 Installera ri-dokumentation för aktivmodell-4.2.5.1 Analysera dokumentation för arel-6.0.3 Installera ri dokumentation för arel-6.0.3 Analysera dokumentation för aktivitetsordord-4.2.5.1 Installera ri-dokumentation för aktivitetsordord-4.2.5.1 Analysera dokumentation för globalid-0.3.6 Installera ri-dokumentation för globalid-0.3.6 Analysera doc förhandling för aktivjob-4.2.5.1 Installera ri-dokumentation för activejob-4.2.5.1 Analysera dokumentation för mime-typer-2.99 Installera ri-dokumentation för mime-typer-2.99 Analysera dokumentation för post-2.6.3 Installera ri-dokumentation för post 2.6.3 Installera ri-dokumentation för post 2.6.3 Parsing dokumentation för actionmailer-4.2.5.1 Installera ri dokumentation för actionmailer-4.2.5.1 Parsing dokumentation för thor-0.19.1 Installera ri dokumentation för thor-0.19.1 Parsing dokumentation för railties-4.2.5.1 Installera ri dokumentation för railties-4.2. 5.1 Parsing-dokumentation för Bundler-1.11.2 Installera ri-dokumentation för Bundler-1.11.2 Parsing-dokumentation för samtidig ruby-1.0.0 Installera ri-dokumentation för samtidig ruby-1.0.0 Parsing-dokumentation för kedjehjul-3.5.2 Installera ri-dokumentation för kugghjul-3.5.2 Parsing dokumentation för kugghjulspår-3.0.1 Installera ri dokumentation för kugghjulspår-3.0.1 Parsing dokumentation för rails-4.2.5.1 kan inte konvertera "\ xFF" från ASCII-8BIT till UTF-8 f eller guider / tillgångar / bilder / akshaysurve.jpg, hoppar inte om att konvertera "\ x89" från ASCII-8BIT till UTF-8 för guider / tillgångar / images / belong_to.png, hoppar inte över att konvertera "\ xF4" från ASCII-8BIT till UTF-8 för guider / tillgångar / bilder / book_icon.gif, hoppar inte över att kunna konvertera "\ x91" från ASCII-8BIT till UTF-8 för guider / tillgångar / bilder / bullet.gif, hoppa över ... fortsatte på och av ... oförmögen att konvertera "\ x80" från ASCII-8BIT till UTF-8 för guider / tillgångar / bilder / tab_yellow.gif, hoppar inte över att konvertera "\ x89" från ASCII-8BIT till UTF-8 för guider / tillgångar / bilder / tab_yellow. png, hoppar inte över att konvertera "\ xFF" från ASCII-8BIT till UTF-8 för guider / tillgångar / bilder / vijaydev.jpg, hoppa över Installera ri-dokumentation för rails-4.2.5.1 31 juveler installerade

Men det fungerade:

$ rails - version Rails 4.2.5.1 

Skapa din ansökan och ramverk

Sedan skapade jag en ny applikation som heter blogg:

$ rails ny blogg skapa skapa README.rdoc skapa Rakefile skapa config.ru skapa .gitignore skapa Gemfile skapa app skapa app / assets / javascripts / application.js skapa app / assets / stylesheets / application.css skapa app / controllers / application_controller.rb skapa app / helpers / application_helper.rb skapa app / visningar / layouter / application.html.erb skapa app / assets / images / .keep skapa app / mailers / .keep skapa app / models / .keep skapa app / controllers / concerns / .keep skapa app / modeller / bekymmer / .keep skapa bin skapa bin / bunt skapa bin / skenor skapa bin / rake skapa bin / setup skapa config skapa config / routes.rb skapa config / application.rb skapa config / environment.rb skapa config / secrets.yml skapa config / environments skapa config / environments / development.rb skapa config / environments / production.rb skapa config / environments / test.rb skapa config / initializers skapa config / initializers / assets.rb skapa config / initializers / backtrace_silencers.rb skapa config / initializers / cookies_seriali zer.rb skapa config / initializers / filter_parameter_logging.rb skapa config / initializers / inflections.rb skapa config / initializers / mime_types.rb skapa config / initializers / session_store.rb skapa config / initializers / wrap_parameters.rb skapa config / locales skapa config / locales / en.yml skapa config / boot.rb skapa config / database.yml skapa db skapa db / seeds.rb skapa lib skapa lib / uppgifter skapa lib / tasks / .keep skapa lib / tillgångar skapa lib / assets / .keep skapa logga skapa logga / .keep skapa public skapa public / 404.html skapa public / 422.html skapa public / 500.html skapa public / favicon.ico skapa public / robots.txt skapa test / fixtures skapa test / fixtures / .keep skapa test / kontroller skapa test / kontroller / .keep skapa test / mailers skapa test / mailers / .keep skapa test / modeller skapa test / modeller / .keep skapa test / helpers skapa test / helpers / .keep skapa test / integration skapa test / integration / .keep skapa test / test_helper.rb skapa tmp / cache skapa tmp / cache / tillgångar skapa leverantör / tillgångar / javascripts skapa leverantör / tillgångar / javascripts / .keep skapa leverantör / tillgångar / stylesheets skapa leverantör / tillgångar / stylesheets / .keep run bundle installera Ditt användarkonto får inte installera till systemet Rubygems. Du kan avbryta den här installationen och köra: buntinstallera -path-leverantör / bunt för att installera pärlorna i ./vendor/bundle/, eller du kan ange ditt lösenord och installera de bädda pärlorna till Rubygems med sudo. Lösenord: Hämtar pärlemetaddata från https://rubygems.org/... Hämtar versionsmetadata från https://rubygems.org/... Hämtar beroendemetadata från https://rubygems.org/... Att lösa beroenden ... Rubygems 2.0.14 är inte threadsafe, så dina juveler kommer att installeras en i taget. Uppgradera till Rubygems 2.1.0 eller högre för att möjliggöra parallell pärla installation. Installera rake 10.5.0 Använda i18n 0.7.0 Installera json 1.8.3 med inbyggda tillägg Använda minitest 5.8.4 Använda thread_safe 0.3.5 Använda byggaren 3.2.2 Använda erubis 2.7.0 Använda mini_portile2 2.0.0 Använda rack 1.6.4 Använda mime -typ 2.99 Använda arel 6.0.3 Installera debug_inspector 0.0.2 med inbyggda tillägg Använda buntar 1.11.2 Installera byebug 8.2.2 med inbyggda tillägg Installera kaffeskriptkälla 1.10.0 Installera execjs 2.6.0 Använda thor 0.19.1 Använda samtidig -ruby 1.0.0 Installera multi_json 1.11.2 Installera sass 3.4.21 Installera tilt 2.0.2 Installera fjäder 1.6.3 Installera sqlite3 1.3.11 med inbyggda tillägg Installera rdoc 4.2.1 Använda tzinfo 1.2.2 Använda nokogiri 1.6.7.2 Använda rack -test 0.6.3 Använda post 2.6.3 Installera bindande_of_caller 0.7.2 med inbyggda tillägg Installera kaffeskript 2.4.1 Installera uglifier 2.7.2 Använda kedjehjul 3.5.2 Installera sdoc 0.4.1 Använda aktiva stöd 4.2.5.1 Använda loofah 2.0.3 Använda rails-deprecated_sanitizer 1.0.3 Använda globalid 0.3.6 Använda aktivmodell 4.2.5.1 Installera jbuilder 2.4.0 Använda rails-html-sanitizer 1.0.3 Använda rails-dom-test 1.0.7 Använda aktivjob 4.2.5.1 Använda aktivitetsord 4.2.5.1 Använda handledning 4.2.5.1 Använda actionpack 4.2.5.1 Använda actionmailer 4.2.5.1 Använda raderier 4.2.5.1 Använda kugghjulskenor 3.0.1 Installera kuggskenor 4.1.1 Installera kuggskenor 4.1.0 Använda skenor 4.2.5.1 Installera skenor 5.0.4 Installera webbkonsol 2.3.0 Installera turbolinks 2.5.3 Paket komplett! 12 Gemfile beroenden, 54 pärlor nu installerade. Använd "bunt show [gemname]" för att se var en buntad pärla är installerad. Post-installera meddelande från rdoc: Beroende på din version av rubin, kan du behöva installera 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: inget att göra! Jippie! kör buntexec spring binstub --all Varning: Du använder Rubygems 2.0.14 med våren. Uppgradera till åtminstone Rubygems 2.1.0 och kör "pärla pristin --all" för bättre uppstart. * Fack / rake: Fjäderinsats * Fack / Fälgar: Fjäderinsats

Du kan bläddra i Rails webbapplikations ramkatalogstruktur inom din ansökan:

$ cd blogg $ ls Gemfile Rakefile config lib test Gemfile.lock app config.ru logg tmp README.rdoc bin db offentlig säljare

Här är en vy från Komma igång-guiden som visar hur Rails bygger på konvention över konfiguration:

Starta din server

Slutligen kan du starta din server med en kommandorad:

$ bin / rails server Varning: Du använder Rubygems 2.0.14 med våren. Uppgradera till åtminstone Rubygems 2.1.0 och kör "pärla pristin --all" för bättre uppstart. => Uppstart WEBrick => Rails 4.2.5.1 applikation som börjar i utveckling på http: // localhost: 3000 => Kör railserver -h för fler startalternativ => Ctrl-C till 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 din ansökan

I din webbläsare går du till http: // localhost: 3000, och du borde se din standard startsida för en generell Rails-applikation:

Jag måste säga, jag önskar allt detta var lite renare. Det sägs att det finns några underbara samhällsresurser som hjälper dig att växa.

Går djupare

Här är ett exempel på en gratis GoRails skärmdump som täcker den grundläggande ramverktygsarkitekturen som visas i katalogen ovan:

Och Rails Guide Guide går dig igenom ett antal första steg:

Sammantaget finns det ett brett utbud av skriftliga och screencast-tutorials där ute för att vägleda dig.

I stängning

Om du är fascinerad av kvaliteten på Ruby on Rails och dess samhälle, hoppas jag att du har hittat denna introduktion en bra utgångspunkt. Kanske har du ens försökt installera ovan.

Nyligen är jag fascinerad av Apples öppna inköp av Swift, en spännande aktör i objektorienterat programmeringsspråkutrymme, som är relaterat till Ruby med liknande långsiktig potential för Rails.

Medan jag har arbetat med Rails tidigare, har jag också kämpat med det, särskilt med värd och utbyggnad av funktionalitet - jag har också funnit att den är dyrare. Jag fortsätter att vara mest bekväm med Yii, som du kan läsa om i vår Envato Tuts + Yii2 Programmeringsserie. Och med PHP 7 som växer framstår framtiden snabbare och ljusare för PHP-baserade programmeringsramar.

Om du har frågor, vänligen posta dem nedan. Eller du kan kontakta mig på Twitter @ reifman. Vänligen kolla in min Envato Tuts + instruktörssida för att se andra handledning som jag har skrivit, till exempel Använda sociala medier för att lokalisera ögonvittnen, som framhäver API: erna för Instagram och Twitter.

relaterade länkar

  • Ruby on Rails
  • Ruby on Rails (Wikipedia)
  • Följ @Rails på Twitter
  • Prenumerera på denna vecka i Rails
  • Go Rails (screencasts och mer)
  • Ruby Programming Language (Wikipedia)
  • Model View Controller (Wikipedia)
  • RailsConf