Cos'è Ruby on Rails?

Crediti immagine: RubyonRails.org

Un framework di sviluppo Web per i puristi

Nel 1995, Yukihiro Matsumoto pubblicò Ruby 0.95 come un puro linguaggio di programmazione generale orientato agli oggetti (OO):

Come maniaco del linguaggio e fan di OO per 15 anni, volevo davvero un vero linguaggio di scripting orientato agli oggetti e facile da usare. Ho cercato ma non ho trovato uno. Quindi ho deciso di farlo. - Y. Matsumoto

Poi, nel 2004, David Heinemeier Hansson ha rilasciato la prima versione di Ruby on Rails come framework di applicazioni web che ha utilizzato per avviare la sua applicazione di gestione del team Basecamp. Ha aperto Ruby on Rails nel 2005 e Apple lo ha rilasciato con OS X Leopard nel 2007.

Per questo tutorial, mi riferirò a Ruby on Rails come Rails in breve; alcune persone usano anche RoR.

Rails è utilizzato da un'ampia varietà di popolari applicazioni Web che potresti conoscere, come GitHub, Shopify, Airbnb, Twitch, SoundCloud, Hulu, Zendesk, Square e Highrise. Tuttavia, è stato criticato per i limiti di scalabilità, in particolare con Twitter, che gradualmente ha dovuto spostare molti dei suoi servizi su altre piattaforme. Detto questo, Twitter presenta elevati tassi di transazione e sfide di scalabilità.

In questo tutorial, risponderò alla domanda "Che cos'è Ruby on Rails?" e introdurrti alle basi del framework di programmazione per aiutarti a sperimentarlo.

Prima di iniziare, ricorda, parteciperò alle discussioni di seguito. Se hai una domanda o un suggerimento sull'argomento, per favore pubblica un commento qui sotto o contattami su Twitter @reifman. 

Cos'è Ruby on Rails?

Ruby on Rails è un popolare framework di sviluppo web orientato agli oggetti, open source, utilizzato da molti programmatori e fornitori di applicazioni. Si basa anche su un approccio Model View Controller (MVC).

I modelli vengono associati ai database e alle funzionalità di un oggetto nell'applicazione, ad esempio gli utenti. Rails fornisce una convenzione standard per le strutture di denominazione e directory dei file, che semplifica la programmazione, ma fornisce anche soluzioni automatizzate per la creazione di funzionalità, chiamate scaffolding. Garantisce inoltre un ambiente comune per gli sviluppatori di lavorare insieme e trarre vantaggio dagli sforzi reciproci.

Ottimizzare per la felicità del programmatore con Convention over Configuration è il modo in cui rotoliamo.

Il controller gestisce le richieste principalmente tra l'utente e il server, raccogliendo i dati dai modelli e restituendoli all'utente tramite Visualizza file.

Le viste sono essenzialmente file HTML programmatici che presentano la pagina con i dati dinamici.

Le convenzioni Rails guidano gli sviluppatori a fare affidamento sul routing RESTful. Azioni del controllore generalmente ad es. nuovo, creare, modificare, aggiornare, distruggere, mostrare, indicizzare, ecc. Questi sono ciò che consente agli utenti e al sistema di interagire con varie funzionalità

Collettivamente, le funzioni MVC di Rails sono chiamate Action Pack, ovvero ActionController, ActionView e ActiveRecord, quest'ultimo per l'interazione con il database.

Il fondatore di Rails Hansson fornisce una teologia di principio dietro il framework chiamato The Ruby on Rails Doctrine.

La dottrina di Ruby on Rails

La dottrina Rails è composta da otto principi:

  1. Ottimizza per la felicità del programmatore: quando possibile, Ruby tenta di soddisfare i desideri del programmatore.
  2. Convenzione sulla configurazione: la scelta delle opzioni predefinite standard per tutta la piattaforma rende più veloce e più facile per i programmatori iniziare i nuovi progetti.
  3. Il menu è omakase: il team dietro a Ruby on Rails ha selezionato i migliori strumenti e approcci e tutti saranno più contenti di usarli.
  4. Nessuno paradigma: alla fine Rails abbraccia soluzioni flessibili per varie occasioni.
  5. Esalta il codice bello: un focus primario sull'estetica e la semplicità.
  6. Value integrated systems: un orientamento verso la completa consapevolezza e coesione di tutti gli strumenti necessari per costruire applicazioni e soluzioni.
  7. Progresso per la stabilità: volontà di rischiare per far avanzare la piattaforma.
  8. Spingi su una grande tenda: accogliendo una grande comunità di partecipanti e le loro voci per impostare la visione.
Il principale risultato di Rails è stato quello di unire e coltivare una forte tribù attorno a una vasta serie di pensieri eretici sulla natura della programmazione e dei programmatori. - David Heinemeier Hansson

Ecco i contributori principali di Rails al momento (il fondatore David Hansson è in alto a sinistra):

E hanno una comunità calda e accogliente:

  • Ruby on Rails: Talk mailing list
  • Il tag Q & A di Ruby on Rails StackOverflow
  • Il canale IRC #rubyonrails su irc.freenode.net
  • Una conferenza annuale di RailsConf per i meetup del mondo reale

Forse ti interessa approfondire ulteriormente, ecco come iniziare.

Iniziare con Ruby on Rails

Rails ha una collezione di documentazione eccezionale. Ecco una panoramica della Guida introduttiva:

La guida ti guida attraverso un'introduzione generale, l'installazione di base e alcuni programmi per principianti.

Installazione di Ruby on Rails

Gli utenti Mac troveranno Ruby preinstallato. Gli utenti Windows possono controllare RailsInstaller. Per un'installazione completa di Rails su OS X, la guida consiglia Tokaido. In alternativa, Daniel Kehoe suggerisce di evitare i programmi di installazione con un clic e fornisce istruzioni dettagliate per l'installazione di Mac OS X El Capitan.

Gli sviluppatori di Rails esperti riportano inoltre che rende lo sviluppo di applicazioni Web più divertente. - Guida delle guide

Tuttavia, era da un po 'che non eseguivo Rails, e reinstallarlo sul mio ultimo modello Mac su El Capitan richiedeva molto tempo.

Verifica l'installazione di Ruby

Su OS X, Ruby sarà preinstallato:

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

Installa il framework Rails

L'installazione di My Rails ha richiesto circa 10/15 minuti (sii paziente):

$ sudo gem install rails Password: Recupero: thread_safe-0.3.5.gem (100%) Installato con successo thread_safe-0.3.5 Recupero: tzinfo-1.2.2.gem (100%) Installato con successo tzinfo-1.2.2 Recupero: minitest -5.8.4.gem (100%) Installato con successo minitest-5.8.4 Recupero: activesupport-4.2.5.1.gem (100%) Activesupport installato correttamente-4.2.5.1 Recupero: rack-1.6.4.gem (100%) Rack-1.6.4 installato con successo Racking: rack-test-0.6.3.gem (100%) Rack-test-0.6.3 installato con successo Recupero: mini_portile2-2.0.0.gem (100%) Mini_portile2-2.0 installato correttamente. 0 Recupero: nokogiri-1.6.7.2.gem (100%) Creazione di estensioni native. Questo potrebbe richiedere del tempo ... Installato con successo nokogiri-1.6.7.2 Recupero: loofah-2.0.3.gem (100%) Installato con successo loofah-2.0.3 Recupero: rails-html-sanitizer-1.0.3.gem (100%) Installato con successo rails-html-sanitizer-1.0.3 Recupero: rails-deprecated_sanitizer-1.0.3.gem (100%) Rails-deprecated_sanitizer-1.0.3 installato correttamente Recupero: rails-dom-testing-1.0.7.gem (100 %) Installato con successo rails-dom-testing-1.0.7 Recupero: builder-3.2.2.gem (100%) Builder-3.2.2 installato con successo Recupero: erubis-2.7.0.gem (100%) Erubis- installato con successo 2.7.0 Recupero: actionview-4.2.5.1.gem (100%) actionview-4.2.5.1 Installato con successo Fetching: actionpack-4.2.5.1.gem (100%) Actionpack-4.2.5.1 installato con successo Recupero: activemodel-4.2.5.1 .gem (100%) Activemodel-4.2.5.1 installato con successo Recupero: arel-6.0.3.gem (100%) Installato con successo arel-6.0.3 Recupero: activerecord-4.2.5.1.gem (100%) Activerecord- Installato con successo 4.2.5.1 Recupero: globalid-0. 3.6.gem (100%) Installato con successo globalid-0.3.6 Recupero: activejob-4.2.5.1.gem (100%) Activejob installato con successo-4.2.5.1 Recupero: mime-types-2.99.gem (100%) Mime installato con successo -types-2.99 Recupero: mail-2.6.3.gem (100%) Installato con successo mail-2.6.3 Recupero: actionmailer-4.2.5.1.gem (100%) Installato con successo actionmailer-4.2.5.1 Recupero: thor-0.19. 1.gem (100%) Installato con successo thor-0.19.1 Recupero: railties-4.2.5.1.gem (100%) Railties installati con successo-4.2.5.1 Recupero: bundler-1.11.2.gem (100%) Bundler installato con successo -1.11.2 Recupero: concurrent-ruby-1.0.0.gem (100%) Installato con successo concurrent-ruby-1.0.0 Recupero: sprockets-3.5.2.gem (100%) Sprockets-3.5.2 installato correttamente Recupero: sprockets-rails-3.0.1.gem (100%) Installato con successo sprockets-rails-3.0.1 Recupero: rails-4.2.5.1.gem (100%) Rails installato con successo-4.2.5.1 Documentazione di analisi per thread_safe-0.3.5 Installazione della documentazione di ri per thread_safe-0.3.5 P arsing documentation for tzinfo-1.2.2 Installare documentazione di ri per tzinfo-1.2.2 Documentazione di analisi per minitest-5.8.4 Installare documentazione di ri per minitest-5.8.4 Documentazione di analisi per activesupport-4.2.5.1 impossibile convertire "\ x84" da ASCII-8BIT a UTF-8 per lib / active_support / values ​​/ unicode_tables.dat, saltando Installazione documentazione ri per activesupport-4.2.5.1 Documentazione di analisi per rack-1.6.4 Installazione documentazione di ri per rack-1.6.4 Documentazione di analisi per rack- test-0.6.3 Installazione della documentazione di ri per rack-test-0.6.3 Documentazione di analisi per mini_portile2-2.0.0 Installazione della documentazione di ri per mini_portile2-2.0.0 Documentazione di analisi per nokogiri-1.6.7.2 impossibile convertire "\ xCA" da ASCII Da -8BIT a UTF-8 per lib / nokogiri / nokogiri.bundle, saltando Installazione della documentazione di ri per nokogiri-1.6.7.2 Documentazione di analisi per loofah-2.0.3 Installazione della documentazione di ri per loofah-2.0.3 Documentazione di analisi per rails-html-sanitizer -1.0.3 Installazione della documentazione di ri for rails-html-sanitizer-1.0.3 Documentazione di analisi per rails-deprecated_sanitizer-1.0.3 Installazione documentazione di ri per rails-deprecated_sanitizer-1.0.3 Documentazione di analisi per rails-dom-testing-1.0.7 Installazione di documentazione di ri per rails-dom -testing-1.0.7 Documentazione di analisi per builder-3.2.2 Installazione di documentazione di ri per builder-3.2.2 Documentazione di analisi per erubis-2.7.0 Installazione di documentazione di ri per erubis-2.7.0 Documentazione di analisi per actionview-4.2.5.1 Installazione di ri documentazione per actionview-4.2.5.1 Analisi della documentazione per actionpack-4.2.5.1 Installazione della documentazione di ri per actionpack-4.2.5.1 Documentazione di analisi per activemodel-4.2.5.1 Installazione della documentazione di ri per activemodel-4.2.5.1 Documentazione di analisi per arel-6.0.3 Installazione documentazione di ri per arel-6.0.3 Documentazione di analisi per activerecord-4.2.5.1 Installazione di documentazione di ri per activerecord-4.2.5.1 Documentazione di analisi per globalid-0.3.6 Installazione di documentazione di ri per globalid-0.3.6 Parsing doc umentation for activejob-4.2.5.1 Installazione della documentazione di ri per activejob-4.2.5.1 Documentazione di analisi per mime-types-2.99 Installazione di documentazione ri per mime-types-2.99 Analisi della documentazione per la posta-2.6.3 Installazione della documentazione di ri per mail-2.6.3 Documentazione di analisi per actionmailer-4.2.5.1 Installazione della documentazione di ri per actionmailer-4.2.5.1 Documentazione di analisi per thor-0.19.1 Installazione di documentazione di ri per thor-0.19.1 Documentazione di analisi per railties-4.2.5.1 Installazione di documentazione di ri per railties-4.2. 5.1 Documentazione di analisi per bundler-1.11.2 Installazione della documentazione di ri per bundler-1.11.2 Documentazione di analisi per concurrent-ruby-1.0.0 Installazione di documentazione di ri per concurrent-ruby-1.0.0 Documentazione di analisi per pignoni-3.5.2 Installazione della documentazione di ri for sprockets-3.5.2 Documentazione di analisi per pignoni-rails-3.0.1 Installazione della documentazione di ri per pignoni-rails-3.0.1 Documentazione di analisi per rails-4.2.5.1 incapace di convertire "\ xFF" da ASCII-8BIT a UTF-8 f o guide / risorse / immagini / akshaysurve.jpg, salta in grado di convertire "\ x89" da ASCII-8BIT a UTF-8 per guide / risorse / immagini / belongs_to.png, saltando incapace di convertire "\ xF4" da ASCII-8BIT a UTF-8 per guide / risorse / immagini / book_icon.gif, salta in grado di convertire "\ x91" da ASCII-8BIT a UTF-8 per guide / risorse / immagini / bullet.gif, saltando ... continua su e avanti ... impossibile per convertire "\ x80" da ASCII-8BIT a UTF-8 per guide / risorse / immagini / tab_yellow.gif, saltando incapace di convertire "\ x89" da ASCII-8BIT a UTF-8 per guide / risorse / immagini / tab_yellow. png, saltando impossibile convertire "\ xFF" da ASCII-8BIT a UTF-8 per guide / risorse / immagini / vijaydev.jpg, saltando Installazione documentazione ri per rails-4.2.5.1 31 gems installati

Ma ha funzionato:

$ rails --version Rails 4.2.5.1 

Crea la tua istanza di applicazione e framework

Poi ho creato una nuova applicazione chiamata blog:

$ rails nuovo blog create create README.rdoc create Rakefile create config.ru create .gitignore create Gemfile create app create app / assets / javascripts / application.js create app / assets / stylesheets / application.css create app / controller / application_controller.rb crea app / helpers / application_helper.rb crea app / views / layouts / application.html.erb crea app / assets / images / .keep crea app / mailers / .keep crea app / models / .keep crea app / controller / preoccupazioni / .keep crea app / models / concerns / .keep crea bin crea bin / bundle crea bin / rails crea bin / rake crea bin / setup crea config crea config / routes.rb crea config / application.rb crea config / environment.rb crea config / secrets.yml crea config / ambienti crea config / environments / development.rb crea config / environments / production.rb crea config / environments / test.rb crea config / initializers crea config / initializers / assets.rb crea config / initializers / backtrace_silencers.rb crea 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 crea config / boot.rb crea config / database.yml crea db crea db / seeds.rb crea lib crea lib / tasks crea lib / tasks / .keep crea lib / assets crea lib / assets / .keep crea log crea log / .keep crea pubblico crea pubblico / 404.html crea pubblico / 422.html crea pubblico / 500.html crea pubblico / favicon.ico crea pubblico / robots.txt crea test / fixtures crea test / fixtures / .keep crea test / controllers crea test / controller / .keep crea test / mail crea test / mailers / .keep crea test / modelli crea test / models / .keep crea test / help crea test / helper / .keep crea test / integrazione crea test / integration / .keep crea test / test_helper.rb crea tmp / cache crea tmp / cache / assets crea fornitore / risorse / javascripts crea vendor / assets / javascripts / .keep crea vendor / assets / stylesheets crea vendor / assets / stylesheets / .keep run bundle installa L'account utente non è autorizzato a installare sul sistema Rubygems. È possibile annullare questa installazione ed eseguire: installazione bundle --path vendor / bundle per installare le gem in ./vendor/bundle/, oppure è possibile immettere la password e installare le gem in bundle su Rubygems usando sudo. Password: recupero dei metadati gem da https://rubygems.org/... Recupero dei metadati della versione da https://rubygems.org/... Recupero dei metadati delle dipendenze da https://rubygems.org/... Risoluzione delle dipendenze ... Rubygems 2.0.14 non è sicuro, quindi le tue gemme verranno installate una alla volta. Passare a Rubygems 2.1.0 o versioni successive per abilitare l'installazione parallela della gemma. Installazione di rake 10.5.0 Uso di i18n 0.7.0 Installazione di json 1.8.3 con estensioni native Uso di minitest 5.8.4 Utilizzo di thread_safe 0.3.5 Utilizzo di builder 3.2.2 Utilizzo di erubis 2.7.0 Uso di mini_portile2 2.0.0 Uso di rack 1.6.4 Utilizzo di mime -types 2.99 Uso di arel 6.0.3 Installazione di debug_inspector 0.0.2 con estensioni native Uso di bundler 1.11.2 Installazione di byebug 8.2.2 con estensioni native Installazione di coffee-script-source 1.10.0 Installazione di execjs 2.6.0 Uso di thor 0.19.1 Uso simultaneo -ruby 1.0.0 Installazione di multi_json 1.11.2 Installazione di sass 3.4.21 Installazione di tilt 2.0.2 Installazione della molla 1.6.3 Installazione di sqlite3 1.3.11 con estensioni native Installazione di rdoc 4.2.1 Uso di tzinfo 1.2.2 Uso di nokogiri 1.6.7.2 Utilizzo del rack -test 0.6.3 Uso della posta 2.6.3 Installazione di binding_of_caller 0.7.2 con estensioni native Installazione di coffee-script 2.4.1 Installazione di uglifier 2.7.2 Uso di pignoni 3.5.2 Installazione di sdoc 0.4.1 Uso di activesupport 4.2.5.1 Uso di luffa 2.0.3 Utilizzo di rails-deprecated_sanitizer 1.0.3 Utilizzo di globalid 0.3.6 Utilizzo di activemodel 4.2.5.1 Installazione di jbuilder 2.4.0 Utilizzo di rails-html-sanitizer 1.0.3 Uso di rails-dom-testing 1.0.7 Utilizzo di activejob 4.2.5.1 Utilizzo di activerecord 4.2.5.1 Utilizzo di actionview 4.2.5.1 Utilizzo di Actionpack 4.2.5.1 Uso di actionmailer 4.2.5.1 Uso di railties 4.2.5.1 Uso di rocchetti di trascinamento 3.0.1 Installazione di coffee-rails 4.1.1 Installazione di jquery-rails 4.1.0 Utilizzo di rails 4.2.5.1 Installazione di sass-rail 5.0.4 Installazione di web-console 2.3.0 Installazione di turbolinks 2.5.3 Pacchetto completo! 12 dipendenze Gemfile, 54 gemme ora installate. Usa 'bundle show [gemname]' per vedere dove è installato un gem in bundle. Messaggio di post-installazione da rdoc: a seconda della versione di Ruby, potrebbe essere necessario installare i dati di 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: niente da fare! Sìì! esegui bundle exec spring binstub --all Avvertenza: stai usando Rubygems 2.0.14 con Spring. Aggiornare almeno a Rubygems 2.1.0 ed eseguire 'gem pristine --all' per migliori prestazioni di avvio. * bin / rake: molla inserita * bin / rails: molla inserita

È possibile sfogliare la struttura di directory del framework dell'applicazione Web di Rails all'interno dell'applicazione:

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

Ecco una vista dalla guida introduttiva che mostra come Rails si basa sulla convenzione sulla configurazione:

Avvia il tuo server

Infine, puoi avviare il tuo server con una riga di comando:

$ bin / rails server Attenzione: stai utilizzando Rubygems 2.0.14 con Spring. Aggiornare almeno a Rubygems 2.1.0 ed eseguire 'gem pristine --all' per migliori prestazioni di avvio. => Avvio di WEBrick => Applicazione Rails 4.2.5.1 che inizia nello sviluppo su http: // localhost: 3000 => Esegui 'rails server -h' per maggiori opzioni di avvio => Ctrl-C per arrestare il 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

Visita la tua applicazione

Nel tuo browser, vai a http: // localhost: 3000, e dovresti vedere la tua home page predefinita per un'applicazione Rails generica:

Devo dire che vorrei che tutto ciò fosse un po 'più pulito. Detto questo, ci sono alcune meravigliose risorse della comunità per aiutarti a crescere.

Going Deeper

Ecco un esempio di uno screencast gratuito di GoRails che illustra l'architettura di base dell'applicazione mostrata nella directory sopra:

E la guida Rails stessa ti guida attraverso una serie di passi iniziali:

Nel complesso, ci sono una grande varietà di tutorial scritti e screencast là fuori per guidarti.

In chiusura

Se sei affascinato dalla qualità di Ruby on Rails e dalla sua community, spero che tu abbia trovato questa introduzione come un utile punto di partenza. Forse hai anche provato l'installazione sopra.

Più recentemente, sono affascinato dal open source di Apple di Swift, un entusiasmante entrante nello spazio linguistico di programmazione object oriented, simile a Ruby con un potenziale a lungo termine simile a Rails.

Anche se in passato ho lavorato con Rails, ho avuto anche delle difficoltà, specialmente con le funzionalità di hosting e di espansione, ma ho anche trovato l'hosting più costoso. Continuo a sentirmi a mio agio con Yii, che puoi leggere nei nostri Envato Tuts + Yii2 Programming Series. E con PHP 7 emergente, il futuro sembra più veloce e più brillante per i framework di programmazione basati su PHP.

Se hai domande, per favore pubblicale qui sotto. Oppure puoi contattarmi su Twitter @reifman. Si prega di controllare la mia pagina di istruttori + istruttore Envato per vedere altri tutorial che ho scritto, come usare i social media per individuare testimoni oculari, che evidenzia le API di Instagram e Twitter.

Link correlati

  • Ruby on Rails
  • Ruby on Rails (Wikipedia)
  • Segui @Rails su Twitter
  • Iscriviti a questa settimana in Rails
  • Go Rails (screencast e altro)
  • Ruby Programming Language (Wikipedia)
  • Model View Controller (Wikipedia)
  • RailsConf