Forum: Ruby on Rails lighttpd / WEBrick forum?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
John N. Alegre (Guest)
on 2006-03-05 19:49
(Received via mailing list)
Is there a mail list or USENET group for lighttpd WEBrick questions.

I posted a simple CGI question to this list last week and got one
responce and that responce told me I was on the wrong list with Ruby
based from / CGI questions.

The code I posted looks correct but does not work giving a Routing
Error.  This makes me think something is wrong with the set up of
WEBrick.   I am only doing the default "rails someapp" and running
WEBrick with script/server -p3020.  The CGI does not work (original
post below).  This makes me think I need to go to some WEBrick
knowledge.  Where can I find it?

john

####################################################
Original post:
####################################################
Ok .. if you are sensitive ... stop reading.

I am totally new to setting up CGI.  I am getting a routing error.
Would someone be kind enough to help me?  Please?

Here is my form ...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitiona...

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <meta http-equiv="content-type" content="text/html;charset=utf-8" />
  <meta name="generator" content="Adobe GoLive" />
  <title>Form | Contact A</title>
</head>

<body bgcolor="#ffffff">

  <form action="cgi-bin/parse.rb" method="post" #I have tried get
enctype="application/x-www-form-urlencoded"> #I have tried text/plain

<table width="455" border="0" cellspacing="0" cellpadding="5">
<tr
height="33">
<from stuff deleted>

I put this in the public folder of a rails WEBrick app.

Here is my Ruby CGI ...

###################################################
#!/opt/local/bin/ruby -w

text = "dog"
print "Content-type: text/html\r\n\r\n"
print "<HTML><BODY>"
print "<B><I>Hello</I>, #{ text} !</B>"
print "</BODY></HTML>"
##################################################
I put this in cgi-bin directory in the same dir as the forms.html
file.  Permissions on the Ruby script where set to 775.  My intention
is not to handle any input from the forms.html file but just to get
back a simple ""Hello dog" after the submit.

here is what i get when i run WEBrick and hit the Submit button ...

Routing Error

Recognition failed for "cgi-bin/parse.rb"

Can anyone help me.   I am not sure if this is a problem with my code,
WEBrick of the form.

Thanks and don't be shy .. i have a thick skin.

john
Ben M. (Guest)
on 2006-03-06 10:33
(Received via mailing list)
There are some general Ruby lists here:

http://www.ruby-lang.org/en/20020104.html

And I'm still confused as to what you are trying to do. Ruby on Rails is
not just a simple
CGI tool.

You say that you're using a rails app, but then you are just trying to
get a CGI script to
fire. That's not how rails works... it expects a specific directory
structure of ruby
files and uses those to process a given request URL. Simply doing
myhost.com/cgi-bin/myrubyfile.rb is not going to work.... even remotely.

If you are interested in using rails to serve dynamic content, you
should read through
some of the docs at rubyonrails.com. If you just want to get a CGI
script to run, don't
bother with rails; look at the docs for you webserver on how to set up
CGI scripts. As
long as you have ruby installed and your shebang line is correct, the
script should get run.

Good luck.

b
John N. Alegre (Guest)
on 2006-03-06 15:57
(Received via mailing list)
Thank you this is why I am asking for a lighttpd / WEBrick forum.

I am using the Rails structure only to "create" an environment to run
WEBrick from.  I am then using WEBrick to try to do simple Ruby CGI.
The script I posted in my original query does work in a simulated
server environment (Komodo).  I now just want to move this to a real
server environment.  I created a Rails directory and then im using
WEBrick out of it just ... creating a directory, ... putting the CGI
script in that dir, ... setting permissions to 775 and seeing if it
works.  It don't.  So I am now assuming there is a problem with my
assumption that I can have a working web server out of a Rails set up
that will do simple CGI.

Peace
john
Ben M. (Guest)
on 2006-03-06 18:57
(Received via mailing list)
Yeah, I don't know anything about using WEBrick freestanding other than
it should be
possible (WEBrick pre-dates rails). And I think that any HTTP server
should be able to do
CGI since it's just "run this and dump it's output into the response
stream"... more or less.

Well, you should probably look through the docs:

http://www.webrick.org/
http://www.lighttpd.net/
or for that matter...
http://httpd.apache.org/

There should be something about running CGIs in there somewhere. I'd bag
the whole idea of
using a rails app though. All you really need is a cgi-bin directory and
a public
directory and the proper config in whatever server you are using.

b

PS: and I have no idea why I'm the only person answering you..... :-(
Jamie O. (Guest)
on 2006-03-06 19:43
(Received via mailing list)
I'm not sure why you'd want to do that. If all you want is WEBrick,
just require/include it in your ruby code and go from there. Have a
look at the WEBrick docs (it's a part of the Ruby distro--Rails not
needed)

Jamie
Ezra Z. (Guest)
on 2006-03-06 22:39
(Received via mailing list)
John-

	Hopefully this info should get you going with your cgi servlet. The
following is a custom webrick servlet that will serve html or cgi
scripts right out of the doc root that you specify:

#!/usr/local/bin/ruby
require 'webrick'
require 'webrick/cgi'
include WEBrick

server = WEBrick::HTTPServer.new

def start_webrick(config = {})
   config.update(:Port => 8000)
   server = HTTPServer.new(config)
   yield server if block_given?
   ['INT', 'TERM'].each {|signal|
     trap(signal) {server.shutdown}
   }
   server.start
end

start_webrick {|server|
   # replace the next line with your doc root that you want to use.
   doc_root = '/Volumes/Users/ez/webrick'
   server.mount("/", HTTPServlet::FileHandler, doc_root,
   {:FancyIndexing=>true})
}


Save that code into a file and run it from the command line. You can
change the port number that it uses in the start_webrick method. then
just put your html and cgi scripts in the doc root and go to town.
Your cgi scripts will need to have .cgi as the extension in order to
work correctly. Here is a simple cgi script that you can test to see
if things are working for you:

#!/usr/bin/env ruby
print "Content-type: text/plain\r\n\r\n"
ENV.keys.sort.each{|k| puts "#{k} ==> #{ENV[k]}"}



Cheers-

-Ezra Z.
Yakima Herald-Republic
WebMaster
http://yakimaherald.com
509-577-7732
removed_email_address@domain.invalid
This topic is locked and can not be replied to.