Ruby  »  Guide  »  Guida Ruby e il Web 

CGI



L'approccio tradizionale alla programmazione Web è sicuramente costituito dai CGI. I CGI sono gestiti dalla libreria cgi distribuita con Ruby che fornisce tutti gli strumenti per scrivere script CGI a partire dai metodi per la generazione di HTML fino a d arrivare agli strumenti per la gestione delle sessioni e dei cookie.

Vediamo innanzitutto come si crea del codice HTML dinamico utilizzando un valore passato attraverso un parametro:

require 'cgi'
cgi = CGI.new("html4")

cgi.out do
  cgi.html do
    cgi.body do
      cgi.h2 {"Esempio di CGI"} +
      cgi.i {"scritto in "} + 
      cgi.a("http://www.ruby-lang.org") { cgi['linguaggio']}
    end
  end
end

Salvandolo come esempio_cgi.rb ed eseguendolo si ottiene banalmente:

$ ruby esempio_cgi.rb
(offline mode: enter name=value pairs on standard input)
linguaggio=Ruby
Content-Type: text/html
Content-Length: 200

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
  <BODY>
    <H2>Esempio di CGI</H2>
      <I>scritto in </I><A HREF="http://www.ruby-lang.org">Ruby</A>
  </BODY>
</HTML>

Dove operando in modalità offline abbiamo prima passato il parametro linguaggio=Ruby e poi premuto i tasti Ctrl+D (o Ctrl+Z in Windows) per eseguire lo script. Il valore passato a "new" corrisponde al livello di HTML desiderato, sono possibili i seguenti valori: html3, html4, html4Tr e html4Fr.

Nel nostro esempio abbiamo utilizzato i metodi html, body, h1, i, a che corrispondono agli omonimi tag HTML. Ovviamente esistono anche i tag più complessi come form, table e tutti gli altri; per un elenco completo si faccia riferimento alla documentazione ufficiale (ri CGI oppure online)all'indirizzo.

In pratica questi metodi si occupano di aprire il tag, inserire il risultato dell'esecuzione del blocco di codice (che deve restituire una stringa) e chiudere il tag all'uscita dal blocco.

Per utilizzare i parametri passati, generalmente, all'interno degli URL sono possibili due strade: una è quella vista nell'esempio e consiste nell'accedere al parametro attraverso il nome

cgi['linguaggio']

l'altro metodo consiste nel trasformare la lista di parametri in hash e poi fare riferimento a tali valori, ad esempio se abbiamo a che fare con un URL che termina nel seguente modo

esempio.cgi?linguaggio=Ruby&implementazione=JRuby

possiamo creare un hash dei parametri

hash_param = cgi.params

dove hash_param sarà

{"linguaggio=>["Ruby"], "implementazione=>["JRuby"]}

Come si può notare ad ogni chiave è associato un array di valori. Utilizzando questo metodo è possibile eseguire sui parametri tutte le operazione disponibili per gli hash.

I CGI hanno notoriamente delle pessime prestazioni, una soluzione a tale problema è rappresentato da FastCGI. Ne esiste un'implementazione in Ruby installabile via gem.

Ultimi articoli Ruby

Duck Typing, tipizzazione per comportamenti

Riconoscere un oggetto non dal tipo ma dai metodi che espone, quindi...

Introduzione a Rack

Implemetare uno stack di middleware per gestire efficacemente...

Le meravigliose novità di Rails 3

La fusione con Merb, l'ottimizzazione del framework, l'introduzione...

CouchDB e Rails: la gemma sul divano

Facciamo la conoscenza di CouchRest, una alternativa ad ActiveRecord...

JRuby: Java e Ruby insieme

Introduzione pratica alla piattaforma JRuby, per utilizzare classi...

Altri articoli

Guide Ruby

Guida ActiveSupport

Una panoramica sulle funzionalità più importanti di ActiveSupport:...

Guida Ruby On Rails 2

Scoprire le novità di Ruby on Rails 2, memorizzare i dati con...

Guida Ruby e il Web

Un percorso alla scoperta delle potenzialità offerte da Ruby nella...

Altre guide

Newsletter @Ruby

Ogni mercoledì, direttamente nella tua e-mail: articoli, guide e tutorial su Ruby e Ruby on Rails .

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Nessun corso previsto

Nessun corso previsto