Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 9 di 32
  • livello principiante
Indice lezioni

CGI

Come utilizzare la libreria cgi di Ruby per generare pagine Web dinamiche
Come utilizzare la libreria cgi di Ruby per generare pagine Web dinamiche
Link copiato negli appunti

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.

Ti consigliamo anche