CGI question

Ruby Beginner question.

In the “Ruby and the Web” section of the pickaxe book they talk about
CGI and give the following example:

========
require ‘cgi’
cgi = CGI.new(“html3”) # add HTML generation methods
cgi.out do
cgi.html do
cgi.head { “\n”+cgi.title { “This Is a Test”} } +
cgi.body do “\n”+
cgi.form do"\n"+
cgi.hr +
cgi.h1 { “A Form: " } + “\n”+
cgi.textarea(“get_text”) +”\n"+
cgi.br +
cgi.submit
end
end
end
end

They claim that this program produces:

Content-Type: text/html
Content-Length: 302

This Is a Test

A Form:


======

When i run this program i get nothing on the console output, and when i
tried to run it in irb, it got stuck on the cgi = CGI.new(“html3”) line
(by stuck I mean further ENTERs don’t give me the standard
irb(main):007:0> ) and gave the following message:

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

can anyone explain to me what’s going on?

Thanks.

Assaf.

Hi,

CGI scripts are executed by a webserver like Apache. It makes no sense
to run them in the console.

By the way, this code looks ancient. HTML 3.2 is 15(!) years old, it was
around when the internet was still young.

Subject: CGI question
Date: Wed 28 Nov 12 07:58:17PM +0900

Quoting Assaf S. ([email protected]):

When i run this program i get nothing on the console output, and when i
tried to run it in irb, it got stuck on the cgi = CGI.new(“html3”) line
(by stuck I mean further ENTERs don’t give me the standard
irb(main):007:0> ) and gave the following message:

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

can anyone explain to me what’s going on?

I have no experience with the cgi package at all, but the message is
clear: IRB is waiting for something on its standard input, waiting for
name=value pairs. If you want to find out exactly what these
name=value pairs are, I suggest you study the cgi package more. But I
can tell you that (at least in Linux) you tell the shell (and IRB)
that you are done with providing data from the standard input with
Ctrl-D. Indeed, if you press Ctrl-D at the above prompt, the object
creation call returns successfully.

Carlo

entering control-z will print the html contents on the console,
If you want to pass some input to the script, you can enter name-value
pairs in the console
like, name=xyx.

On Nov 28, 2012, at 03:18 , Jan E. [email protected] wrote:

CGI scripts are executed by a webserver like Apache. It makes no sense
to run them in the console.

not true:

10001 % ruby19
require ‘cgi’
cgi = CGI.new(“html3”) # add HTML generation methods
cgi.out do
cgi.html do
cgi.head { “\n”+cgi.title { “This Is a Test”} } +
cgi.body do “\n”+
cgi.form do"\n"+
cgi.hr +
cgi.h1 { “A Form: " } + “\n”+
cgi.textarea(“get_text”) +”\n"+
cgi.br +
cgi.submit
end
end
end
end
^d
(offline mode: enter name=value pairs on standard input)
^d
Content-Type: text/html
Content-Length: 302

This Is a Test

A Form:


Hey Assaf,

In a real server case it would send parameters to the script.
In a command line case once the cgi code scope ended it will require the
parameters entered one by one and CTRL+D should run it.

I am using ruby for CGI scripts but formatting a form this way can be
very painful.
I would go for writing the RAW html by myself with touches of variables
if needed.

Regards,
Eliezer

Ryan D. wrote in post #1086967:

On Nov 28, 2012, at 03:18 , Jan E. [email protected] wrote:

CGI scripts are executed by a webserver like Apache. It makes no sense
to run them in the console.

not true:

I did not mean it’s impossible. Of course CGI scripts are normal
programs.

But I don’t see the point of writing CGI scripts without actually
running them on a webserver and inspecting the result in a browser. What
do you learn from an obscure script that you have to execute in a
“strange” way to see some random gibberish on the console? There isn’t
any context.

Anyway, if that was the goal of the exercise, I guess he can move on
now.

Thanks Ryan, That definitely did the trick.
I had no idea that i can just type ‘ruby1.9.1’ and then type ruby code
and CTRL+D executes it.

Actually, it also works from inside eclipse. cool. live and learn.

Thanks again,

Assaf.


Ryan D. wrote in post #1086967:

On Nov 28, 2012, at 03:18 , Jan E. [email protected] wrote:

CGI scripts are executed by a webserver like Apache. It makes no sense
to run them in the console.

not true:

10001 % ruby19
require ‘cgi’
cgi = CGI.new(“html3”) # add HTML generation methods
cgi.out do
cgi.html do
cgi.head { “\n”+cgi.title { “This Is a Test”} } +
cgi.body do “\n”+
cgi.form do"\n"+
cgi.hr +
cgi.h1 { “A Form: " } + “\n”+
cgi.textarea(“get_text”) +”\n"+
cgi.br +
cgi.submit
end
end
end
end
^d
(offline mode: enter name=value pairs on standard input)
^d
Content-Type: text/html
Content-Length: 302

This Is a Test

A Form: