homeASCIIcasts

200: Rails 3 beta e RVM 

(view original Railscast)

Other translations: En Es De Fr

Other formats:

Written by Andrea Salicetti

Quale miglior modo per celebrare il duecentesimo episodio che non quello di dare una prima occhiata a Rails 3? La prima beta di Rails 3 è stata appena rilasciata e in questo episodio vi mostreremo come installarla e configurarla. Poi, nei prossimi episodi, scopriremo in profondità le nuove funzionalità di questa versione. Anche se non avete in programma un aggiornamento imminente delle vostre applicazioni, ha certamente senso installare la beta sin d’ora in modo tale da cominciare quanto prima a prenderci confidenza e giocare con alcune nuove interessanti feature.

Aggiornamento di Ruby

Rails 3 ha bisogno di Ruby 1.8.7 o successivo per funzionare, per cui la prima cosa da fare è vedere quale versione avete installata al momento sul vostro sistema, lanciando da console il comando ruby -v:

  $ ruby -v
  ruby 1.8.6 (2008-08-11 patchlevel 287) [universal-darwin9.0]
  

Questa macchina ha installato Ruby 1.8.6, per cui dobbiamo fare l’aggiornamento di Ruby prima di procedere oltre. Potremmo farlo manualmente, ma invece useremo rvm, il Ruby Version Manager. Questo strumento di permetterà di installare diverse versioni di Ruby in modo semplice e di cambiare tra le varie versioni con un semplice comando.

Se il vostro sistema operativo è Windows, rvm non è disponibile, per cui dovrete installare Ruby a mano. Sui sistemi Linux, OS X o altri sistemi operativi basati su UNIX, invece, possiamo installare rvm seguendo le istruzioni presenti nella pagina di installazione e lanciare il seguente comando:

  mkdir -p ~/.rvm/src/ && cd ~/.rvm/src && rm -rf ./rvm/ && git clone --depth 1 git://github.com/wayneeseguin/rvm.git && cd rvm && ./install
  

Dopo che il comando avrà terminato l’esecuzione, occorrono ancora un paio di istruzioni per completare l’installazione. Queste instruzioni cambiano a seconda che si stia utilizzando una console bash piuttosto che una zsh. Una volta eseguite quelle istruzioni e compiute le modifiche significative, dobbiamo chiudere e riaprire la console. A questo punto, possiamo lanciare il comando rvm per installare una qualunque versione di Ruby che desideriamo:

Rails 3.0 ha bisogno di Ruby 1.8.7 per funzionare, ma funziona anche con la versione 1.9.1 e dal momento che ci sentiamo temerari, anzichè la semplice 1.8.7 decidiamo di installare proprio la versione più recente. Per fare ciò, lanciamo:

  $ rvm install 1.9.1
  

Il comando si occuperà di scaricare, configurare e installare Ruby 1.9.1. Ci metterà un po’ di minuti per fare tutto ciò. Quando avrà finito, potremo lanciare un rvm list per vedere quali versioni di Ruby abbiamo installato.

  asalicetti@pc-salicetti:~$ rvm list

  rvm Rubies

     ruby-1.9.1-p378 [ i386 ]

  System Ruby

     system [ ]
  

Dal momento che ora abbiamo installata una versione 1.9.1 di Ruby, possiamo passare a questa per renderla LA versione "attiva".

  $ rvm 1.9.1
  $ ruby -v
  ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-darwin10.2.0]
  

La nuova versione di Ruby sarà quella attiva solamente per il ciclo di vita della console. Se chiudiamo e riapriamo il terminale, avremo nuovamente la versione originale come versione attiva di Ruby. Per fare in modo che la nuova versione rimanga anche sempre quella attiva, possiamo passare il parametro --default al comando rvm:

  $ rvm 1.9.1 --default
  $ ruby -v
  ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-darwin10.2.0]
  

Ora potremo aprire e chiudere tutte le shell che vorremo, che la versione di Ruby per ogni console rimarrà sempre la 1.9.1.

Se in qualsiasi momento volessimo ripristinare la versione di Ruby di sistema, potremmo farlo usando il comando rvm system, eventualmente passando anche il parametro opzionale --default per rendere permanente la scelta.

Installare Rails 3 Beta

Ora che abbiamo installato una versione Ruby adatta, possiamo installare Rails 3 beta. Per farlo, dobbiamo lanciare questi due comandi (presi dal wbelog di Ruby on Rails 3) sul terminale:

  gem install tzinfo builder memcache-client rack rack-test rack-mount erubis mail text-format thor bundler i18n
  gem install rails --pre
  

Dal momento che stiamo installando una versione pre-release di Rails, dovremo installare i prerequisiti separatamente, ed è quello che facciamo con la prima riga. Si noti che non stiamo eseguendo questi comandi gem come superuser (sudo). Poichè stiamo usando rvm, non vogliamo usare sudo quando installiamo i gem, per cui è molto importante ricordarsi questa cosa. La pagina sui gem sul sito rvm spiega meglio il perchè.

Una volta che entrambi i comandi hanno terminato l’esecuzione, avremo installato Rails 3.0 e potremo cominciare a provarlo.

Usare Rails 3.0

Per prima cosa, sinceriamoci che l’installazione di Rails 3 sia andata a buon fine lanciando un rails -v:

  $ rails -v
  Rails 3.0.0.beta3
  

Se vedete un errore al lancio del comando, dovreste provare nuovamente dopo aver chiuso e riaperto il terminale. Una volta che siamo sicuri di avere Rails 3.0 funzionante, possiamo creare la nostra prima applicazione. Sarà un’applicazione molto semplice che servirà a salvare i punteggi più alti di gioco e la chiameremo topscore. Un’applicazione Rails 3.0 si crea allo stesso modo delle versioni precedenti di Rails:

  rails topscore
  

Ma non appena ci spostiamo dentro la cartella dell’applicazione generata e proviamo a far partire il server, notiamo la prima differenza:

  $ script/server
  -bash: script/server: No such file or directory
  

Non c’è più nessuno dei comandi un tempo presenti sotto la cartella script. Allora come avviamo il server? La risposta è che tutti i comandi si lanciano ora in questo modo, mediante il comando rails:

  rails server
  

Quando lanciamo questo comando, otterremo un grosso messaggio di errore per i nostri problemi, ma piccoli blocchi instabili come questo ci stanno in una versione beta. Se guardiamo bene il messaggio di errore, noteremo che indica che manca il gem sqlite3-ruby. Dal momento che abbiamo già installato quel gem nel nostro sistema, tutto ciò potrebbe spiazzarci un po’, ma in realtà occorre considerare che ogni singola versione di Ruby che abbiamo installato si porta dietro il proprio insieme basilare di RubyGem, per cui ogni gem aggiuntivo di cui avremo bisogno dovrà essere installato per ogni versione di Ruby. Perciò occorre che installiamo il gem sqlite3-ruby per Ruby 1.9.1, tenendo sempre presente di non farlo con il prefisso sudo:

  gem install sqlite3-ruby
  

Questa volta, quando rilanciamo rails server, vedremo un bel po’ di messaggi di output e pochi warning, ma alla fine il server partirà. Se andiamo all’URL http://localhost:3000 col browser, vedremo la pagina di default di Rails:

La pagina di benvenuto della nostra prima applicazione Rails 3.0.

Ora possiamo iniziare a costruire la nostra applicazione. Cominceremo col costruire gli scaffold per un modello Game che dovrà avere un attributo name di tipo string:

  rails generate scaffold game name:string
  

Vedrete ancora un po’ di output in console al lancio del comando, ma alla fine tutto eseguirà correttamente. Ora migriamo il database:

  rake db:migrate
  

Se ora visitiamo la pagina games, vedremo la solita pagina autogenerata dallo scaffold che senza dubbio avrete già visto in altre applicazioni Rails:

La pagina per un nuovo gioco generata dallo scaffold.

Non andremo oltre in questo episodio con lo sviluppo dell’applicazione. Nei prossimi episodi tratteremo delle nuove funzionalità di Rails 3 in dettaglio, ma nel frattempo è bene leggersi le Release Notes di Rails 3.0 per avere un’idea generale di cosa sia cambiato. C’è anche una vasta collezione di link su Rails 3 all’indirizzo Ruby Inside.

Dal momento che si lavora con software in versione beta, esiste la possibilità che le cose non funzionino perfettamente e che si possa incappare in anomalie o problemi. Se capitasse, una volta certi che il problema non derivi da un errore sul vostro codice, la prima cosa da fare è controllare quali altri gem o plugin stia usando la vostra applicazione. Ci sono buone probabilità che sia uno di questi gem o plugin a causare l’errore, dal momento che alcuni di questi potrebbero non essere ancora stati portati ad una versione compatibile con Rails 3 o Ruby 1.9. Se riscontraste un problema su un particolare gem o plugin, dovreste aggiungere una segnalazione o un ticket alla pagina del progetto di quello specifico gem, in modo tale che possa essere risolto.

Se siete invece certi che il problema risieda proprio nel framework Rails stesso, potete inoltrare un ticket a Rails Lighthouse. Se decideste di inoltrare una nuova segnalazione, è bene tenere presente questi semplici consigli. Innanzitutto, dovreste cercare fra le segnalazioni già esistenti per essere sicuri che la segnalazione non esista già per quel problema. Nello scrivere il ticket assicurarsi di includere le instruzioni per riprodurre l’errore, oltre che tutti i messaggi di errore e lo stack trace ottenuto. Infine, includere nel ticket la versione esatta di Ruby e Rails su cui state verificando l’anomalia, insieme ai plugin e ai gem installati, in modo tale che sia più facile riprodurre il problema. Inoltrare ticket fatti bene favorirà la loro più celere risoluzione.

Ritorno all’Open Source

Come avrete probabilmente notato, questo è il duecentesimo episodio e per celebrare il duecentesimo Railscast, Ryan Bates ha lanciato una campagna denominata “Give Back To Open Source” (ritorno all’Open Source - ndt). Un mucchio di lavoro passa attraverso software open source che è reso poi disponibile gratuitamente a chiunque lo voglia usare, per cui ha senso, quando possiamo, dare qualcosa in cambio. La sfida che Ryan vi lancia è quella di aprire la vostra più grande applicazione Rails e guardare ai vari plugin e gem che utilizza. Se guardate ad ogni pagina di progetto di ogni gemcosì trovato, scoprirete che molti fra gli autori di questi progetti accettano donazioni e sono talvolta molto apprezzati perfino i piccoli contributi e aiuti allo sviluppo.

In alternativa, potreste dare un’occhiata alla lista delle segnalazioni del progetto e creare un fork dello stesso per risolvere alcune delle anomalie o per contribuire alla documentazione. Spetta a voi decidere come contribuire, ma siete incoraggiati a farlo, affinchè tutto ciò aiuti la comunità Rails ad andare avanti e crescere.