Ruby on Rails, questo sconosciuto
by Michele
In questo momento sto installando Ruby on Rails sul mio PowerBook, sto seguendo una guida passo passo. L’intero pacchetto Ruby on Rails è installato da un pacchetto binario già pronto sotto forma di installer per Mac OS X. Ovviamente l’installazione potrebbe variare in base alle varie versioni di Mac OS X e di Mysql. Maggiori informazioni le potete trovare sul wiki di Rails.
Finito l’installazione si crea la cartella dove inserire tutte le applicazioni Rails e poi si crea la prima applicazione con il comando:
rails Test
Il comando rails è fondamentale per preparare l’ambiente standard di una applicazione Rails. Si tratta di una struttura simile a quella progettata da Sun per le web application Java. In Rails ci si trova di fronte ad un vero e proprio ambiente integrato. La natura professionale di questo ambiente si nota quando ci si rende conto che tutto è diviso in tre sotto ambienti: sviluppo, test, produzione. Sono inoltre presenti le cartelle con gli unit test per le varie componenti che vengono autogenerati dallo script generate.
Il solo comando rails non basta e quindi il giovane genio che ha progettato Rails ha reso disponibile uno script che permette di generare le varie componenti MVC. Lo script in questione si chiama generate ed è presente all’interno della cartella script di ogni progetto Rails.
Lo script permette di generare la componente controller e la componente model.
script/generate controller Contacts script/generate model Contact
Con questo comando genero un controller di nome Contacts e un modello dati di nome Contact che verrà mappato automaticamente su di una tabella SQL con il nome plurale del model. In questo caso il nome della tabella cercato sarà contacts. La classe model generata avrà il seguente codice:
class Contact < ActiveRecord::Base end
La classe Contact estende la ActiveRecord::Base che gli permette di essere mappata ad una tabella SQL in maniera automatica. Si tratta di un sistema molto potente visto che ad ogni modifica della struttura della tabella non segue una modifica della classe che ne rappresenta il modello dati. Sono rimasto molto sorpreso da questa cosa, in un primo momento pensavo che da qualche parte fosse generata una tabella di mappatura ma non c’è trucco. Quando ho chiamato il metodo Contact.find_all mi sono reso conto che si trattava di qualcosa di veramente innovativo.
Il controller generato invece è vuoto e vanno definite le azioni in maniera manuale. Ogni azione è un metodo della classe e verrà richiamato via web tramite un indirizzo del tipo:
http://localhost:3000/contacts/list
Il primo pezzo del path è il nome del controller, il secondo è il nome dell’azione. Quindi in questo caso ci troveremo una classe controller di nome ContactsController con un metodo list:
class ContactsController < ApplicationController def list @items = Contact.find_all end end
Ad ogni azione del controller c'è associata un pagina di view con il nome della stessa azione. Per una azione list verrà cercata una pagina di nome list.rhtml.
Tutte queste componenti sono separate fisicamente all'interno di cartelle ben definite. Ci sono una serie di convenzioni che vanno seguite e che fanno delle applicazione Rails un vero standard nello sviluppo web. In questo momento, questo framework sta emergendo specialmente fra chi sviluppa applicazioni web ricche.
Credo che per stuzzicare l'appetito possa bastare tutto ciò. Io non conosco Ruby ma seguendo semplici passi sono riuscito a creare un'applicazione di rubrica in pochi minuti. Chi ha provato Ruby on Rails ha detto che si può essere circa 10 volte più veloci nello sviluppo rispetto ad un analogo framework Java.
Probabilmente questo framework sarà il motivo per cui mi metterò a leggere qualcosa di più sul linguaggio Ruby
Commenti
Da rubyista fanatico, benvenuto a bordo
Peccato che mi manca ancora un po’ per mettere in piedi il sito nuovo del gruppo utenti ruby italia..
Ciao, se ti interessa una toy app che implementa parecchie delle cose di Rails puoi dare un’occhiata al mio pastebin: http://rebbin.berlios.de/
aspetta di scoprire lo scaffolding, magia pura!!!
Già visto
però mi chiedo che impatto ha sulle prestazioni delle applicazioni.
Nessun impatto rilevante, in fondo e` codice di aiuto. Pure il libro sviluppa un’applicazione basandosi sullo scaffold (che alla fine sostanzialmente butta via).
Ciao!
sottoscrivo quello che dice rhymes, lo scafolding alla fine lo usi per un “kickstart” allo sviluppo, ma poi lo fai sparire.
Credo che un qualche overhead possa aggiungerlo per via dell’introspezione sul database, ma una volta che metti in campo il caching diventa irrilevante.
ho problemi con SCGI su linux, ho eseguito tutte le istruzioni .. ma quando lancio scgi_ctrl start , mi compare questo messaggio e non riesco ad uscirne ..
./scgi_ctrl start
[root@production bin]# /Server/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:21:in `require__’: no such file to load — config/environment (LoadError)
from /Server/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:21:in `require’
from ./scgi_service:35:in `configure_rails’
from ./scgi_service:43:in `initialize’
from ./scgi_service:60
Grazie tante a chi mi potrà aiuare !