Webrick, cgi e offline mode

Uso webrick in locale per testare gli script ruby (in particolare per
servire pagine .rhtml con eruby)

Quando chiamo la libreria cgi mi dà errore, precisamente va in “offline
mode”.
Potete dirmi come risolvere?

Grazie mille.

Che vuol dire chiamare la libreria cgi?
Allega il log di sviluppo o dai qualche indicazione in più.

LG

Luca G. wrote:

Che vuol dire chiamare la libreria cgi?
Allega il log di sviluppo o dai qualche indicazione in più.

LG

Scritto il seguente file .rhtml:

<% require ‘cgi’
cgi = CGI.new %>

, avvio webrick e tento di accedere alla pagina.
Comincia un caricamento senza termine della pagina e nel terminale (dove
ho avviato webrick) mi esce scritto:

(offline mode: enter name=value pairs on standard input)

Roberto De Ioris wrote:

Il giorno mar, 24/07/2007 alle 15.24 +0200, name surname ha scritto:

<% require ‘cgi’
cgi = CGI.new %>

, avvio webrick e tento di accedere alla pagina.
Comincia un caricamento senza termine della pagina e nel terminale (dove
ho avviato webrick) mi esce scritto:

(offline mode: enter name=value pairs on standard input)

Ma hai configurato webrick per eseguire in modalita’ cgi gli script ?

Dall’errore che riporti sembra proprio di no

Allora, io ho solo ripreso da un manuale ruby ed eseguito questo script
per avviare webrick:

require ‘webrick’

class ERubyHandler < WEBrick::HTTPServlet::ERBHandler
ERuby = “/usr/bin/eruby”

def initialize(server, name)
super
@script_filename = name
end

def do_GET(req, res)
IO.popen("#{ERuby} #{@script_filename}") do |io|
res.body = io.read
end
res[“content-type”] = “text/html”
end
end

WEBrick::HTTPServlet::FileHandler.add_handler(“rhtml”, ERubyHandler)

s = WEBrick::HTTPServer.new(:Port => 10000)
s.mount("/", WEBrick::HTTPServlet::FileHandler, “/var/www/eruby/”,
{:FancyIndexing => true})
trap(“INT”){ s.shutdown }
s.start

Puoi dirmi come procedere a questo proposito?

Il giorno mar, 24/07/2007 alle 15.24 +0200, name surname ha scritto:

<% require ‘cgi’
cgi = CGI.new %>

, avvio webrick e tento di accedere alla pagina.
Comincia un caricamento senza termine della pagina e nel terminale (dove
ho avviato webrick) mi esce scritto:

(offline mode: enter name=value pairs on standard input)

Ma hai configurato webrick per eseguire in modalita’ cgi gli script ?

Dall’errore che riporti sembra proprio di no

Il giorno mar, 24/07/2007 alle 15.55 +0200, name surname ha scritto:

def initialize(server, name)
end

WEBrick::HTTPServlet::FileHandler.add_handler(“rhtml”, ERubyHandler)

s = WEBrick::HTTPServer.new(:Port => 10000)
s.mount("/", WEBrick::HTTPServlet::FileHandler, “/var/www/eruby/”,
{:FancyIndexing => true})
trap(“INT”){ s.shutdown }
s.start

Per eseguire uno script in modalita’ CGI e’ necessario un ambiente CGI,
che di default non hai sotto webrick (e francamente non so se esista un
handler che lo crei visto che sarebbe abbastanza ridondante)

Tutto quello che ti serve te lo fornisce l’handler ERB che mette tutte
le informazioni in 2 variabili:

meta_vars e query

se vuoi quindi leggere i parametri di una form ti basta un
query[“pippo”]

mmm, se potessi farmene un esempio, anche breve (basta che sia compreso
di avvio del webrick) te ne sarei molto grato

cmq… come fai a sapere che devo leggere le variabili dell’url? :stuck_out_tongue:

Il giorno mar, 24/07/2007 alle 17.15 +0200, name surname ha scritto:

mmm, se potessi farmene un esempio, anche breve (basta che sia compreso
di avvio del webrick) te ne sarei molto grato

cmq… come fai a sapere che devo leggere le variabili dell’url? :stuck_out_tongue:

Beh e’ l’unico motivo che mi viene in mente per cui potessi aver bisogno
di includere il modulo cgi in erb :slight_smile:

Comunque il tuo webrick va bene come e’ adesso, ora ti basta
semplicemente leggere il contenuto della variabile ‘query’ con
query[nomecampo] Ex. query[‘myfield’] per accedere ai valori passati da
una form:

myfield e’ uguale a: <%=query[‘myfield’]%>

Roberto De Ioris wrote:

Il giorno mar, 24/07/2007 alle 17.15 +0200, name surname ha scritto:

mmm, se potessi farmene un esempio, anche breve (basta che sia compreso
di avvio del webrick) te ne sarei molto grato

cmq… come fai a sapere che devo leggere le variabili dell’url? :stuck_out_tongue:

Beh e’ l’unico motivo che mi viene in mente per cui potessi aver bisogno
di includere il modulo cgi in erb :slight_smile:

Comunque il tuo webrick va bene come e’ adesso, ora ti basta
semplicemente leggere il contenuto della variabile ‘query’ con
query[nomecampo] Ex. query[‘myfield’] per accedere ai valori passati da
una form:

myfield e’ uguale a: <%=query[‘myfield’]%>

Ah, capito. Pensavo l’avessi correlato con una discussione che ho aperto
qualche giorno fa :slight_smile:

Comunque avevo già provato a fare così ma niente… Non riconosce la
variabile query:
undefined local variable or method `query’ for main:Object (NameError)

Semplicemente ho avviato webrick con lo script mostrato e inserito la
riga di codice che mi hai detto in file.rhtml

Ciao, io uso questo codice e non da nessun tipo di errore, prova a
confrontarlo.
(Nella mia ubuntu ho dovuto installare eruby)
ciao marco

require “webrick”

class ERubyHandler < WEBrick::HTTPServlet::ERBHandler
ERuby = “/usr/bin/eruby”

def initialize(server, name)
super
@script_filename = name
end

def do_GET(req, res)
IO.popen(“#{ERuby} #{@script_filename}”){|io|
res.body = io.read
}
res[“content-type”] = “text/html”
end
end

register new handler class

WEBrick::HTTPServlet::FileHandler.add_handler(“rhtml”, ERubyHandler)

s = WEBrick::HTTPServer.new(:Port=> 2000)
s.mount(“/ruby”, WEBrick::HTTPServlet::FileHandler,
“/common//webserver_ruby”, true)
trap(“INT”){ s.shutdown }
s.start

On 7/24/07, Roberto De Ioris [email protected] wrote:


Dr. Marco Forlin
cell: 349 5322671
email: [email protected]

harloc wrote:

se chiamo query[‘nomedelcamponellaform] la risposta di webrick e’ non
riconosciuto query, mentre se faccio stampare @query mi risponde con nil
nil
anche se il parametro respitutito e’
http://…/risposta.rhtml?username=ciccio.

Quello che succede a me :confused:

Scusate per il post precedente, ma anch’io ho lo stesso problema:
se chiamo query[‘nomedelcamponellaform] la risposta di webrick e’ non
riconosciuto query, mentre se faccio stampare @query mi risponde con nil
nil
anche se il parametro respitutito e’
http://…/risposta.rhtml?username=ciccio.
Qualche aiuto?
ciao marco

On 7/25/07, harloc [email protected] wrote:


Dr. Marco Forlin
cell: 349 5322671
email: [email protected]

Scusate se rompo…
ho trovato un’altro script per lanciare un webserver ed ora il problema
è
che il codice ruby viene inviato correttamente alla console, e non al
browser.
ecco lo script:

require ‘webrick’
include WEBrick

def start_webrick(config = {})
config.update(:Port => 8080)
config.update(:MimeTypes => {‘rhtml’ => ‘text/html’})
server = HTTPServer.new(config)
yield server if block_given?
[‘INT’, ‘TERM’].each {|signal|
trap(signal) {server.shutdown}
}
ruby_dir = File.expand_path(‘/home/harloc/webserver_ruby’)
server.mount(“/home/harloc/webserver_ruby”, HTTPServlet::ERBHandler,
ruby_dir)
server.start
end
start_webrick(:DocumentRoot => ‘/home/harloc/webserver_ruby’)

Ecco invece le due pagine .rhtml:

prova.rhtml

eRuby Test

Testing eRuby

  <form name="dati" action="risposta.rhtml">
    Please enter your username: <input type="text" 

name=“username”>


risposta.rhtml

eRuby Test

Testing eRuby

<%=
if (query[‘username’] = “ciccione”)
puts “ok”
end
%>

Grazie,
marco

On 7/26/07, name surname [email protected] wrote:


Dr. Marco Forlin
cell: 349 5322671
email: [email protected]

Ho lo stesso problema che avete tutti voi…non mi funziona con la
libreria cgi!

Ciao potresti postare tutto il codice per farmi capire meglio, a me non
funziona…
grazie,
ciao marco

On 8/5/07, Pino S. [email protected] wrote:

Risolto cosi:

require 'cgi'
> cgi=CGI.new
> var = cgi.params['nome_variabile']


Dr. Marco Forlin
cell: 349 5322671
email: [email protected]

Pino S. wrote:

Ho lo stesso problema che avete tutti voi…non mi funziona con la
libreria cgi!

Risolto cosi:

require 'cgi'
cgi=CGI.new
var = cgi.params['nome_variabile']

harloc wrote:

Ciao potresti postare tutto il codice per farmi capire meglio, a me non
funziona…
grazie,
ciao marco

On 8/5/07, Pino S. [email protected] wrote:

Risolto cosi:

require 'cgi'
>> cgi=CGI.new
>> var = cgi.params['nome_variabile']


Dr. Marco Forlin
cell: 349 5322671
email: [email protected]

Per prendere ad esempio la variabile di nome “sezione” faccio cosi:

require ‘cgi’
cgi=CGI.new
var=cgi[“sezione”]
print “Content-type: text/html\r\n\r\n”
print “la variabile sezione vale#{var}”

oppure

var=cgi.params[“sezione”].at(0) if cgi.has_key? “sezione”

se i dati arrivano da un form con type=mulipart/form-data faccio così:
section_id = cgi[“section_id”].read.to_s

Sinceramente non so perchè, ci ho sclerato molto e mo mi funziona sempre
e non solo su webrick :wink:
:wink: