Afbeeldingscredits: RubyonRails.org
In 1995 bracht Yukihiro Matsumoto Ruby 0,95 uit als een pure, objectgeoriënteerde (OO) algemene programmeertaal:
Als taalmaniak en OO-fan gedurende 15 jaar wilde ik echt een echte objectgeoriënteerde, eenvoudig te gebruiken scripttaal. Ik zocht maar kon er geen vinden. Dus besloot ik het te maken. - Y. Matsumoto
In 2004 bracht David Heinemeier Hansson de eerste versie van Ruby on Rails uit als een webapplicatiekader waarmee hij zijn teammanagementapplicatie Basecamp op de markt bracht. Hij opende Ruby on Rails in 2005 en Apple bracht het in 2007 uit met OS X Leopard.
Voor deze tutorial zal ik Ruby on Rails kortweg Rails noemen; sommige mensen gebruiken ook RoR.
Rails wordt gebruikt door een groot aantal populaire webtoepassingen die u misschien kent, zoals GitHub, Shopify, Airbnb, Twitch, SoundCloud, Hulu, Zendesk, Square en Highrise. Het is echter bekritiseerd vanwege beperkingen op het gebied van schaalbaarheid, met name bij Twitter, dat geleidelijk veel van zijn diensten naar andere platforms moest verplaatsen. Dat gezegd hebbende, heeft Twitter hoge transactiesnelheden en schaalbaarheidsproblemen.
In deze tutorial beantwoord ik de vraag "Wat is Ruby on Rails?" en u kennis laten maken met de basis van het programmeerraamwerk om u te helpen ermee te experimenteren.
Voordat we van start gaan, onthoud alsjeblieft dat ik deelneem aan de onderstaande discussies. Als je een vraag of een suggestie voor een onderwerp hebt, plaats dan een reactie hieronder of neem contact met mij op via Twitter @reifman.
Ruby on Rails is een populair, open-source, object-georiënteerd webontwikkelingsraamwerk dat door veel programmeurs en toepassingsproviders wordt gebruikt. Het is ook gebaseerd op een MVC-benadering (Model View Controller).
Modelt kaart naar de databases en functionaliteit naar een object in de applicatie, zoals gebruikers. Rails biedt een standaardconventie voor naamgeving en bestandsdirectorystructuren, wat het programmeren vereenvoudigt maar ook voorziet in geautomatiseerde oplossingen voor bouwfunctionaliteit, steiger genoemd. Het zorgt ook voor een gemeenschappelijke omgeving voor ontwikkelaars om samen te werken en te profiteren van elkaars inspanningen.
Optimaliseren voor geluk programmeur met Conventie over Configuratie is hoe we rollen.
De Controller beheert verzoeken voornamelijk tussen de gebruiker en de server, verzamelt gegevens van modellen en stuurt deze terug naar de gebruiker via View-bestanden.
Weergaven zijn in wezen programmacode HTML-bestanden die de pagina met de dynamische gegevens weergeven.
Railsconventies begeleiden ontwikkelaars om te vertrouwen op RESTful routing. Besturingsacties in het algemeen b.v. nieuw, maken, bewerken, bijwerken, vernietigen, weergeven, indexeren, enz. Dit is wat gebruikers en het systeem toestaat om met verschillende functies te werken
Collectief worden de MVC-kenmerken van Rails het Action Pack genoemd, d.w.z. ActionController, ActionView en ActiveRecord, de laatste voor interactie met de database.
De oprichter van Rails, Hansson, levert een principiële theologie achter het raamwerk genaamd The Ruby on Rails Doctrine.
De Rails-doctrine bestaat uit acht stellingen:
De belangrijkste prestatie van Rails was om een sterke stam te verenigen en cultiveren rond een breed scala aan ketterse gedachten over de aard van programmeren en programmeurs. - David Heinemeier Hansson
Hier zijn de belangrijkste bijdragers van Rails momenteel (oprichter David Hansson bevindt zich in de linkerbovenhoek):
En ze hebben een warme, gastvrije gemeenschap:
Misschien ben je geïnteresseerd om verder te duiken, dus hier is hoe je aan de slag kunt gaan.
Rails heeft een verzameling uitstekende documentatie. Hier is een kijkje in de handleiding Aan de slag:
De gids leidt u door een algemene inleiding, basisinstallatie en enkele beginner Rails-programmering.
Mac-gebruikers zullen Ruby vooraf geïnstalleerd vinden. Windows-gebruikers kunnen RailsInstaller bekijken. Voor een volledige Rails-installatie op OS X beveelt de gids Tokaido aan. Als alternatief stelt Daniel Kehoe voor om installatieprogramma's met één klik te vermijden en geeft gedetailleerde instructies voor de installatie van Mac OS X El Capitan.
Ervaren ontwikkelaars van Rails melden ook dat het de ontwikkeling van webtoepassingen leuker maakt. - Rails Guide
Het was echter een tijdje geleden dat ik Rails had uitgevoerd en het opnieuw installeren ervan op mijn late model Mac op El Capitan was tijdrovend.
Op OS X is Ruby vooraf geïnstalleerd:
$ ruby -v ruby 2.0.0p645 (2015-04-13 revisie 50299) [universal.x86_64-darwin15]
De installatie van My Rails duurde ongeveer 10 tot 15 minuten (wees geduldig):
$ sudo gem install rails Wachtwoord: ophalen: thread_safe-0.3.5.gem (100%) met succes geïnstalleerd thread_safe-0.3.5 ophalen: tzinfo-1.2.2.gem (100%) met succes geïnstalleerd tzinfo-1.2.2 ophalen: minitest -5.8.4.gem (100%) met succes geïnstalleerd minitest-5.8.4 Ophalen: activesupport-4.2.5.1.gem (100%) met succes geïnstalleerd activesupport-4.2.5.1 Ophalen: rack-1.6.4.gem (100%) Succesvol geïnstalleerd rack-1.6.4 Ophalen: rack-test-0.6.3.gem (100%) Succesvol geïnstalleerd rack-test-0.6.3 Ophalen: mini_portile2-2.0.0.gem (100%) Met succes mini_portile2-2.0 geïnstalleerd. 0 Ophalen: nokogiri-1.6.7.2.gem (100%) Eigen extensies bouwen. Dit kan een tijdje duren ... Met succes geïnstalleerd nokogiri-1.6.7.2 Ophalen: loofah-2.0.3.gem (100%) Met succes geïnstalleerd loofah-2.0.3 Ophalen: rails-html-sanitizer-1.0.3.gem (100%) Met succes geïnstalleerd rails-html-sanitizer-1.0.3 Ophalen: rails-deprecated_sanitizer-1.0.3.gem (100%) Met succes geïnstalleerde rails-deprecated_sanitizer-1.0.3 Ophalen: rails-dom-testing-1.0.7.gem (100 %) Met succes geïnstalleerd rails-dom-testen-1.0.7 Ophalen: builder-3.2.2.gem (100%) met succes geïnstalleerd builder-3.2.2 Ophalen: erubis-2.7.0.gem (100%) Met succes geïnstalleerd erubis- 2.7.0 Fetching: actionview-4.2.5.1.gem (100%) Actionview met succes geïnstalleerd - 4.2.5.1 Fetching: actionpack-4.2.5.1.gem (100%) Actionpack met succes geïnstalleerd - 4.2.5.1 Fetching: activemodel-4.2.5.1 .gem (100%) Activemodel succesvol geïnstalleerd - 4.2.5.1 Ophalen: arel-6.0.3.gem (100%) Met succes geïnstalleerd arel-6.0.3 Ophalen: activerecord-4.2.5.1.gem (100%) Met succes geïnstalleerd activerecord- 4.2.5.1 Ophalen: globalid-0. 3.6.gem (100%) Met succes geïnstalleerd globalid-0.3.6 Ophalen: activejob-4.2.5.1.gem (100%) Met succes geïnstalleerd activejob-4.2.5.1 Ophalen: mime-types-2.99.gem (100%) Met succes geïnstalleerd mime -types-2.99 ophalen: mail-2.6.3.gem (100%) met succes geïnstalleerd mail-2.6.3 ophalen: actionmailer-4.2.5.1.gem (100%) met succes geïnstalleerd actionmailer-4.2.5.1 ophalen: thor-0.19. 1.gem (100%) Correct geïnstalleerd thor-0.19.1 Ophalen: railties-4.2.5.1.gem (100%) Met succes geïnstalleerde railtouwen-4.2.5.1 Ophalen: bundler-1.11.2.gem (100%) Met succes geïnstalleerde bundler -1.11.2 Ophalen: gelijktijdig-ruby-1.0.0.gem (100%) Met succes geïnstalleerd gelijk-ruby-1.0.0 Ophalen: tandwielen-3.5.2.gem (100%) Met succes geïnstalleerde tandwielen-3.5.2 Ophalen: tandwielen-rails-3.0.1.gem (100%) Succesvol geïnstalleerde tandraderen-rails-3.0.1 Ophalen: rails-4.2.5.1.gem (100%) Met succes geïnstalleerde rails-4.2.5.1 Ontleed-documentatie voor thread_safe-0.3.5 Installatie van ri-documentatie voor thread_safe-0.3.5 P arsing documentatie voor tzinfo-1.2.2 Installatie van ri-documentatie voor tzinfo-1.2.2 Ontleed documentatie voor minitest-5.8.4 Installatie van ri-documentatie voor minitest-5.8.4 Parsing-documentatie voor actieve ondersteuning-4.2.5.1 kan "\ x84" niet converteren ASCII-8BIT naar UTF-8 voor lib / active_support / values / unicode_tables.dat, overslaan Installatie van ri-documentatie voor active-support-4.2.5.1 Ontleeddocumentatie voor rack-1.6.4 Installatie van ri-documentatie voor rack-1.6.4 Parsing-documentatie voor rack- test-0.6.3 Installatie van ri-documentatie voor rack-test-0.6.3 Parsing-documentatie voor mini_portile2-2.0.0 Installatie van ri-documentatie voor mini_portile2-2.0.0 Ontleeddocumentatie voor nokogiri-1.6.7.2 niet in staat om "\ xCA" van ASCII te converteren -8BIT naar UTF-8 voor lib / nokogiri / nokogiri.bundle, overslaan Installeren van ri-documentatie voor nokogiri-1.6.7.2 Parsing-documentatie voor loofah-2.0.3 Installeren van ri-documentatie voor loofah-2.0.3 Parsing-documentatie voor rails-html-sanitizer -1.0.3 Installatie van ri-documentatie for rails-html-sanitizer-1.0.3 Parsing-documentatie voor rails-deprecated_sanitizer-1.0.3 Installatie van ri-documentatie voor rails-deprecated_sanitizer-1.0.3 Parsing-documentatie voor rails-dom-testing-1.0.7 Installatie van ri-documentatie voor rails-dom -testing-1.0.7 Parsing-documentatie voor builder-3.2.2 Installeren van ri-documentatie voor builder-3.2.2 Parsing-documentatie voor erubis-2.7.0 Installatie van ri-documentatie voor erubis-2.7.0 Parsing-documentatie voor actionview-4.2.5.1 Installeren van ri documentatie voor actionview-4.2.5.1 Parsing-documentatie voor actionpack-4.2.5.1 Installatie van ri-documentatie voor actionpack-4.2.5.1 Ontleeddocumentatie voor activemodel-4.2.5.1 Installatie van ri-documentatie voor activemodel-4.2.5.1 Ontleeddocumentatie voor arel-6.0.3 Installeren ri-documentatie voor arel-6.0.3 Parsing-documentatie voor activerecord-4.2.5.1 Installatie van ri-documentatie voor activerecord-4.2.5.1 Ontleeddocumentatie voor globalid-0.3.6 Installatie van ri-documentatie voor globalid-0.3.6 Parsing-document umentation for activejob-4.2.5.1 Installatie van ri-documentatie voor activejob-4.2.5.1 Ontleed-documentatie voor mime-types-2.99 Installatie van ri-documentatie voor mime-types-2.99 Parsing-documentatie voor mail-2.6.3 Installatie van ri-documentatie voor mail-2.6.3 Parsing-documentatie voor actionmailer-4.2.5.1 Installatie van ri-documentatie voor actionmailer-4.2.5.1 Ontleeddocumentatie voor thor-0.19.1 Installatie van ri-documentatie voor thor-0.19.1 Parsing-documentatie voor spoorgebieden-4.2.5.1 Installatie van ri-documentatie voor spoorgebieden-4.2. 5.1 Parsing-documentatie voor bundler-1.11.2 Installatie van ri-documentatie voor bundler-1.11.2 Parsing-documentatie voor concurrent-ruby-1.0.0 Installatie van ri-documentatie voor concurrent-ruby-1.0.0 Parsing-documentatie voor tandwielen-3.5.2 Installatie van ri-documentatie voor kettingwielen-3.5.2 Ontleeddocumentatie voor kettingwielen-rails-3.0.1 Installeren van ri-documentatie voor kettingwielen-rails-3.0.1 Ontleed documentatie voor rails-4.2.5.1 niet in staat om "\ xFF" om te zetten van ASCII-8BIT naar UTF-8 f of guides / assets / images / akshaysurve.jpg, overslaan van conversie "\ x89" van ASCII-8BIT naar UTF-8 niet mogelijk voor guides / assets / images / belong_to.png, overslaan van "\ xF4" naar ASCII-8BIT onmogelijk naar UTF-8 voor hulplijnen / assets / images / book_icon.gif, overslaan van niet in staat om "\ x91" te converteren van ASCII-8BIT naar UTF-8 voor handleidingen / assets / images / bullet.gif, overslaan ... continueren en doorgaan ... niet in staat om "\ x80" om te zetten van ASCII-8BIT naar UTF-8 voor hulplijnen / assets / images / tab_yellow.gif, overslaan van niet in staat is om "\ x89" van ASCII-8BIT naar UTF-8 te converteren voor hulplijnen / assets / images / tab_yellow. png, skipping kan "\ xFF" van ASCII-8BIT naar UTF-8 niet converteren voor handleidingen / assets / images / vijaydev.jpg, overslaan Installeren van ri-documentatie voor rails-4.2.5.1 31 edelstenen geïnstalleerd
Maar het werkte:
$ rails --versie Rails 4.2.5.1
Toen maakte ik een nieuwe applicatie genaamd blog:
$ rails nieuwe blog maken maken README.rdoc maken Rakefile maken config.ru maken .gitignore maken Gemfile maken app maken maken app / assets / javascripts / application.js maken app / assets / stylesheets / application.css maken app / controllers / application_controller.rb maak app / helpers / application_helper.rb maak app / views / layouts / application.html.erb maak app / assets / images / .keep create app / mailers / .keep create app / models / .keep create app / controllers / concerns / .keep create app / models / concerns / .keep create bin create bin / bundle create bin / rails create bin / rake create bin / setup create config create config / routes.rb create config / application.rb create config / environment.rb create config / secrets.yml create config / environments create config / environments / development.rb create config / environments / production.rb create config / environments / test.rb create config / initializers create config / initializers / assets.rb create config / initializers / backtrace_silencers.rb create config / initializers / cookies_seriali zer.rb create config / initializers / filter_parameter_logging.rb create config / initializers / inflections.rb create config / initializers / mime_types.rb create config / initializers / session_store.rb create config / initializers / wrap_parameters.rb create config / locales create config / locales / en.yml create config / boot.rb create config / database.yml create db create db / seeds.rb create lib create lib / tasks create lib / tasks / .keep create lib / assets create lib / assets / .keep create log maken log / .keep maken openbaar maken openbaar maken / 404.html openbaar maken / 422.html openbaar maken / 500.html openbaar maken / favicon.ico maken openbaar / robots.txt maken test / fixtures maken test / fixtures / .keep maken test / controllers maken test / controllers / .keep maken test / mailers maken test / mailers / .keep maken test / modellen maken test / modellen / .keep maken test / helpers maken test / helpers / .keep maken test / integratie maken test / integratie / .keep create test / test_helper.rb create tmp / cache create tmp / cache / assets create vendor / assets / javascripts aanmaken vendor / assets / javascripts / .keep aanmaken vendor / assets / stylesheets aanmaken vendor / assets / stylesheets / .keep bundelinstallatie uitvoeren Uw gebruikersaccount is niet toegestaan om te installeren op het systeem Rubygems. U kunt deze installatie annuleren en uitvoeren: bundel installeren - pad leverancier / bundel om de edelstenen te installeren in ./vendor/bundle/, of u kunt uw wachtwoord invoeren en de gebundelde edelstenen installeren in Rubygems met behulp van sudo. Wachtwoord: edelmetagegevens ophalen van https://rubygems.org/... Metagegevens van de versie ophalen van https://rubygems.org/... Metagegevens van afhankelijkheid ophalen van https://rubygems.org/... Verbindingen oplossen ... Rubygems 2.0.14 is niet threadsafe, zodat je edelstenen één voor één worden geïnstalleerd. Upgrade naar Rubygems 2.1.0 of hoger om parallelle edelsteeninstallatie mogelijk te maken. Installatie van rake 10.5.0 met i18n 0.7.0 Installatie van json 1.8.3 met native extensies Minitest gebruiken 5.8.4 Wire_safe gebruiken 0.3.5 Met builder gebruiken 3.2.2 Erubis 2.7.0 gebruiken Mini_portile2 2.0.0 gebruiken Rack gebruiken 1.6.4 Mime gebruiken -types 2.99 Arel gebruiken 6.0.3 Debug_inspector installeren 0.0.2 met native extensies Bundler gebruiken 1.11.2 Installeren byebug 8.2.2 met native extensies Coffee-script-source installeren 1.10.0 Execjs 2.6.0 gebruiken Thor 0.19.1 Gelijktijdig gebruiken -ruby 1.0.0 Multi_json installeren 1.11.2 sass installeren 3.4.21 Kantel 2.0.2 lente installeren 1.6.3 sqlite3 1.3.11 installeren met native extensies rdoc installeren 4.2.1 tzinfo 1.2.2 gebruiken nokogiri gebruiken 1.6.7.2 rack gebruiken -test 0.6.3 Gebruik van mail 2.6.3 Installatie van binding_of_caller 0.7.2 met native extensies Installeren van coffee-script 2.4.1 Installeren van uglifier 2.7.2 Gebruik van sprockets 3.5.2 Installeren van sdoc 0.4.1 Gebruik van active-support 4.2.5.1 Loofah 2.0.3 gebruiken Gebruik van rails-deprecated_sanitizer 1.0.3 Using globalid 0.3.6 Activemodel gebruiken 4.2.5.1 Jbuilder installeren 2.4.0 Rail-html-ontsmetting gebruiken 1.0.3 Rail-dom-testen gebruiken 1.0.7 Actieve job gebruiken 4.2.5.1 Activerecord gebruiken 4.2.5.1 Actieweergave gebruiken 4.2.5.1 Actionpack gebruiken 4.2.5.1 Actionmailer gebruiken 4.2.5.1 Spoorwegen gebruiken 4.2.5.1 Tandwielen-rails gebruiken 3.0.1 Koffie-rails installeren 4.1.1 JQuery-rails installeren 4.1.0 Rails gebruiken 4.2.5.1 Sass-rails installeren 5.0.4 Web-console installeren 2.3.0 Turbolinks installeren 2.5.3 Bundel voltooid! 12 Gemfile afhankelijkheden, 54 edelstenen nu geïnstalleerd. Gebruik 'bundelprogramma [gemnaam]' om te zien waar een gebundeld edelsteen is geïnstalleerd. Post-install-bericht van rdoc: Afhankelijk van uw versie van robijn, moet u mogelijk ruby rdoc / ri-gegevens installeren: <= 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: niets te doen! Yay! run bundel exec spring binstub --all Waarschuwing: u gebruikt Rubygems 2.0.14 met Spring. Upgrade naar minimaal Rubygems 2.1.0 en voer 'gem pristine --all' uit voor betere opstartprestaties. * bak / hark: veer geplaatst * bak / rails: veer geplaatst
U kunt door de mapstructuur van de Rails-webtoepassingsstructuur bladeren in uw toepassing:
$ cd blog $ ls Gemfile Rakefile config lib test Gemfile.lock app config.ru log tmp README.rdoc bin db public vendor
Hier is een overzicht van de handleiding Aan de slag die laat zien hoe Rails afhankelijk is van conventie via configuratie:
Ten slotte kunt u uw server starten met een opdrachtregel:
$ bin / rails server Waarschuwing: u gebruikt Rubygems 2.0.14 met Spring. Upgrade naar minimaal Rubygems 2.1.0 en voer 'gem pristine --all' uit voor betere opstartprestaties. => Opstarten WEBrick => Rails 4.2.5.1 applicatie start in ontwikkeling op http: // localhost: 3000 => Run 'rails server -h' voor meer opstartopties => Ctrl-C om server af te sluiten [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 poort = 3000
Ga in uw browser naar http: // localhost: 3000 en u zou uw standaard startpagina moeten zien voor een generieke Rails-applicatie:
Ik moet zeggen, ik wou dat dit alles een beetje schoner was. Dat gezegd hebbende, er zijn een aantal geweldige community-bronnen om je te helpen groeien.
Hier is een voorbeeld van een gratis GoRails screencast die de basisarchitectuur voor framework-toepassingen behandelt die in de bovenstaande directory wordt getoond:
En de Rails Guide leidt u zelf door een aantal beginstappen:
Over het algemeen zijn er een breed scala aan schriftelijke en screencast tutorials om u te begeleiden.
Als je geïntrigeerd bent door de kwaliteit van Ruby on Rails en zijn community, hoop ik dat je deze introductie een nuttig uitgangspunt hebt gevonden. Misschien heb je zelfs de bovenstaande installatie geprobeerd.
Meer recentelijk ben ik geïntrigeerd door Apple's open sourcing van Swift, een opwindende nieuwkomer in de object georiënteerde programmeertaalruimte, vergelijkbaar met Ruby met een vergelijkbaar potentieel op de lange termijn voor Rails.
Hoewel ik in het verleden met Rails heb gewerkt, heb ik er ook moeite mee gehad, vooral met het hosten en uitbreiden van functionaliteit - ik vond het ook duurder om het te hosten. Ik blijf het meeste comfortabel met Yii, waarover je meer kunt lezen in onze Envato Tuts + Yii2-programmeringsreeks. En met de opkomst van PHP 7 ziet de toekomst er sneller en rooskleuriger uit voor PHP-gebaseerde programmeerkaders.
Als u vragen hebt, kunt u ze hieronder plaatsen. Of u kunt contact met mij opnemen op Twitter @reifman. Bekijk mijn Envato Tuts + instructeurpagina om andere tutorials te zien die ik heb geschreven, zoals het gebruik van sociale media om ooggetuigen te vinden, waarin de API's van Instagram en Twitter worden belicht.