E ora Rackup! Testiamo Rack

15 giugno 2010

E ora Rackup!

Il Reverse middleware è pronto, ora va testato e provato. Per fare questo esistono due alternative: creare una piccola applicazione che abbia tra i suoi middleware Reverse o inserire questa classe all’interno di uno stack già esistente, magari all’interno di un’applicazione Rails.

Proviamo entrambe le alternative; per la prima l’approccio più consigliato è quello di utilizzare rackup, una piccola utility a linea di comando capace di esporre un’applicazione ed il suo stack di middleware attraverso un webserver (tipicamente Mongrel). Cuore nevralgico di questa installazione è un file di configurazione, spesso chiamato config.ru, che specifica che middleware e che applicazione debbano fare parte di ogni progetto.

Il file config.ru, che va posizionato per comodità nella stessa cartella che contiene la classe Reverse, contiene puro e semplice codice Ruby, ad esempio:

#\ -p 3000 

app = proc do |env|
  [ 200, {'Content-Type' => 'text/html'}, <<-EOS ]
  
    <html>
    <body style="color:white;text-shadow: black 0px 0px 5px;font-size: 18px;">
    <pre style="width:600px;margin:20px;">
        Rack provides a minimal, modular and adaptable interface for 
        developing web applications in Ruby. By wrapping HTTP requests 
        and responses in the simplest way possible, it unifies and 
        distills the API for web servers, web frameworks, and software 
        in between (the so-called middleware) into a single method call.

                              (dalla definizione di Rack, wikipedia.org)
    <pre>
    </body>
    </html>
    
  EOS

end

run app

Nel listato possiamo distinguere due istruzioni. La prima memorizza in app una funzione anonima che accetta in ingresso una variabile e ritorna un array di tre elementi: stato, headers e body. Volendo legare questo con quanto detto fino ad ora potremmo assentire sul fatto che app rispetta tutti i canoni di un applicazione rack-enabled, infatti risponde in modo corretto al metodo app.call(env). La seconda istruzione invece esegue app.

Aprendo un terminale all’interno della stessa cartella del file config.ru ed eseguendo da linea di comando l’utility rackup senza alcun parametro aggiuntivo verrà lanciato un webserver sulla porta 3000 che grazie a rack convoglierà ogni richiesta nell’applicazione appena illustrata.

Provando a puntare un browser all’indirizzo localhost:3000 sarà possibile leggere la definizione di Rack della wikipedia con una ombreggiatura tipicamente CSS3.

Il file di configurazione config.ru appena presentato non contiene alcun middleware (se non quelli che implicitamente Rack include), per aggiungere alla catena l’anello Reverse è necessario modificare l’inizio del file segue:

require 'reverse'
#\ -p 3000 
use Reverse

#... resto del file come da esempio precedente...

Fermando (CTRL+C) e riavviando il server la pagina all’indirizzo localhost:3000 mostrerà ora la stessa definizione di prima ma completamente invertita: merito di Reverse!

Se vuoi aggiornamenti su E ora Rackup! Testiamo Rack inserisci la tua e-mail nel box qui sotto:
 
X
Se vuoi aggiornamenti su E ora Rackup! Testiamo Rack

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy