title: Ruby on Rails
text: # Ruby on Rails
  
  Ruby on Rails, spesso chiamato RoR o semplicemente Rails, è un framework open source per applicazioni web scritto in Ruby da David Heinemeier Hansson per conto della 37signals. La sua architettura è fortemente ispirata al paradigma Model-View-Controller (MVC). I suoi obiettivi sono la semplicità e la possibilità di sviluppare applicazioni di concreto interesse con meno codice rispetto ad altri framework. Il tutto con necessità di configurazione minimale.
  
  Rails è principalmente distribuito attraverso RubyGems, che è il formato dei pacchetti e il canale di distribuzione ufficiale per librerie ed applicazioni Ruby.
  
  Siti famosi che usano Ruby on Rails sono Airbnb, Bloomberg, Crunchbase, Dribbble, indiexpo, GitHub, Twitch, Twitter, ed anche Shopify.
  
  ## Filosofia
  
  I principi guida di Ruby on Rails comprendono "don't repeat yourself" e "convention over configuration".
  
  "Don't repeat yourself" significa che le definizioni devono essere poste una volta soltanto. Poiché Ruby On Rails è un framework "full-stack", i componenti sono integrati in modo tale che i collegamenti fra di essi non devono essere impostati manualmente. Ad esempio in Active Record, le definizioni delle classi non devono specificare i nomi delle colonne; Ruby può estrarli direttamente dal database, dunque riportarli anche nel programma sarebbe ridondante.
  
  "Convention over configuration" significa che il programmatore ha bisogno di metter mano alla configurazione soltanto per ciò che differisce dalle convenzioni. Ad esempio, se un modello è costituito dalla classe Post, la corrispondente tabella nel database deve chiamarsi posts, o altrimenti deve essere specificata manualmente (set_table_name "blogposts", nel caso in cui blogposts sia il nome della tabella).
  
  ## Descrizione
  
  Le applicazioni in Rails sono organizzate all'interno di una struttura comune di cartelle e file. Secondo il paradigma Model View Controller l'applicazione è divisa in tre parti: Modello, Viste e Controller. La libreria Active Record implementa l'Object-relational mapping in Rails, secondo lo standard consolidato: le tabelle diventano classi, le righe corrispondono a oggetti delle classi, mentre le colonne sono convertite in attributi. Le classi hanno metodi per eseguire operazioni sulle tabelle (query) o su singole righe (modifica, inserisci, cancella). Per visualizzare i contenuti dinamici, le Viste incorporano codice Ruby dal quale è possibile costruire frammenti JavaScript eseguiti nel browser, oppure documenti XML e/o JSON con struttura che ricalca quella del codice Ruby.
  
  ## Cronologia versioni
  
  Versioni :
  
  | Versione | Data |
  | - | - |
  | 1.0 | 13 dicembre 2005 |
  | 1.2 | 19 gennaio 2007 |
  | 2.0 | 7 dicembre 2007 |
  | 2.1 | 1º giugno 2008 |
  | 2.2 | 21 novembre 2008 |
  | 2.3 | 16 marzo 2009 |
  | 3.0 | 29 agosto 2010 |
  | 3.1 | 31 agosto 2011 |
  | 3.2 | 20 gennaio 2012 |
  | 4.0 | 25 giugno 2013 |
  | 4.1 | 8 aprile 2014 |
  | 4.2 | 19 dicembre 2014 |
  | 5.0 | 30 giugno 2016 |
  | 5.1 | 10 maggio 2017 |
  | 5.2 | 9 aprile 2018 |
  | 5.3 | 28 marzo 2019 |
  | 6.0 | 15 agosto 2019 |
  | 7.0 | 15 dicembre 2021 |
  