Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Struttura di un'applicazione Rails - II

Descrizione dettagliata della struttura delle directory di un'applicazione Rails: P-V
Descrizione dettagliata della struttura delle directory di un'applicazione Rails: P-V
Link copiato negli appunti

Continuiamo la descrizione di come è strutturata un'applicazione scritta con Ruby on Rails.

Public

È la web root, cioè il posto in cui vanno messi file HTML statici, immagini, JavaScript e CSS. Per questi ultimi tre esistono delle specifiche sottodirectory. Anche in questo case si capisce che questa piccola convenzione permette alle applicazioni Rails di essere molto omogenee tra loro.

Script

in questa cartella sono presenti alcuni piccoli programmi che permettono di fare molte operazioni utili. Abbiamo già visto, ad esempio script/server, ovvero il Web server integrato in Rails, utile per iniziare a sviluppare in tempi minimi e senza problemi. Tra gli altri script quelli di cui è particolarmente importante parlare sono script/generate e script/console. Il primo permette di generare gli scheletri di alcuni file, ad esempio se decidiamo di creare un modello per gli User potremo usare script/generate model User ed otterremo un file per il modello User, una nuova migration, un file dove scrivere i test per la classe ed uno dove inserire dei dati predefiniti.

Il fatto che questi file vengano generati automaticamente, così come anche le directory che li contengono, rende lo sviluppo molto più veloce nelle fasi iniziali. 

script/console è invece uno strumento molto utile per interagire direttamente con l'applicazione, scrivendo codice "dal vivo".  Dopo aver creato un'applicazione, anche se vuota, è già possibile utilizzarlo. Eseguendo quindi lo script (cioè scrivendo ruby script/console) vedrete un prompt di questo tipo:

$ ruby script/console
Loading development environment.
>>

In pratica ci viene fornito un prompt, esattamente come per una shell Unix o per un prompt DOS su Windows. I comandi utilizzabili in questo prompt però non sono quelli di una shell, bensì normale codice ruby:

>> 1+1
=> 2
>> puts("ciao")
ciao
=> nil
>> array= [1,2,3,4]
=> [1, 2, 3, 4]
>> array[0]
=> 1

Quando viene inserita un'istruzione e si preme invio la console la interpreta e mostra a schermo il risultato (nelle righe che cominciano per => ). nil è una costante che significa niente, nulla.  Senza entrare nel dettaglio della sintassi di Ruby, cui sarà dedicata una guida a parte, notate il modo in cui vengono immessi numeri: stringhe e Array. Potete anche definire dei metodi in questo modo:

>> def ciao
>>  return "ciao gente"
>> end
=> nil
>> ciao
=> "ciao gente"

Notate che in Ruby si possono omettere le parentesi quando non c'è ambiguità (ad esempio ciao e ciao() sono equivalenti in questo caso). Si possono poi definire classi in questo modo:

>> class Portiere
>>  def saluta
>>   return "salve signore"
>>  end
>> end
=> nil
>> portiere=Portiere.new
=> #<Portiere:0x3b3c2f0>
>> portiere.saluta
=> "salve signore"

Qua ci sono due novità: primo, la sintassi per richiamare i metodi su di un oggetto è uguale a quella di Java, Python e C#, ovvero oggetto.metodo. Secondo, è possibile creare un oggetto chiamando il metodo new della classe, come in Portiere.new. Notate infine che per assegnare un valore ad una variabile è sufficiente scrivere variabile = espressione, senza doverla dichiarare.  

Per uscire dalla console basta scrivere exit o quit. La console di Rails è in realtà basata su uno script che viene fornito insieme a ruby che si chiama irb (Interactive RuBy) ed ha molte funzionalità. Ovviamente Ruby è un linguaggio molto più potente di queste semplici istruzioni ma per ora sarà sufficiente imparare le nozioni descritte sopra.

Test

Questa directory è destinata a contenere i test che svilupperete per la vostra applicazione. In particolare essa conterrà test relativi ad ogni parte dell'applicazione (controller, modelli, viste) e test  che invece attraversano tutti gli strati. Inoltre in questa directory si potranno mantenere dei dati di prova utili a far girare i test (le cosi dette fixture).

Tmp

Ovviamente, contiene file temporanei, tra cui quelli relativi alle sessioni. 

Vendor

In un qualsiasi progetto ci si ritrova a utilizzare librerie di terze parti, ed esse vanno mantenute in questa directory. Quindi se nel nostro sviluppo utilizziamo la libreria RedCloth per creare HTML da semplice testo, essa andrà messa in vendor/redcloth. Un particolare tipo di librerie di terze parti sono i plugin, ovvero delle piccole librerie che contengono funzionalità che estendono Rails e che possono essere installate automaticamente tramite script/plugin, in questo modo:

$ ruby script/plugin list
account_location    http://dev.rubyonrails.com/svn/Rails/plugins/account_location/
acts_as_taggable     http://dev.rubyonrails.com/svn/Rails/plugins/acts_as_taggable/ 
browser_filters      http://dev.rubyonrails.com/svn/Rails/plugins/browser_filters/ ...
upload_progress     http://dev.rubyonrails.com/svn/Rails/plugins/upload_progress/

$ ruby script/plugin install acts_as_taggable
+ ./acts_as_taggable/init.rb
+ ./acts_as_taggable/lib/README
+ ./acts_as_taggable/lib/acts_as_taggable.rb
+ ./acts_as_taggable/lib/tag.rb
+ ./acts_as_taggable/lib/tagging.rb
+ ./acts_as_taggable/test/acts_as_taggable_test.rb

Il plugin acts_as_taggable, che permette di creare in due righe modelli che siano taggabili, usati in moltissime applicazioni moderne, è stato automaticamente cercato ed installato, salvato in vendor/plugins, e può essere aggiornato indipendentemente dal resto dell'applicazione. La lista di plugin esistenti per Rails è enorme, dai sistemi di autenticazione agli effetti grafici all'integrazione con sistemi esterni.

Ti consigliamo anche