I wish to use Ruby in Apache through CGI. I've the next during my configuration file:

DocumentRoot /home/ceriak/ruby

<Directory /home/ceriak/ruby>
    Options +ExecCGI
    AddHandler cgi-script .rb
</Directory>

test.rb is really a testfile placed directly under /home/ceriak/ruby/, #!/usr/bin/ruby incorporated around the first line and given executable permissions. Still, after i visit localhost/test.rb I recieve a download window and may have the source code.

Oddly enough, after i put the same script under /usr/lib/cgi-bin/ and call localhost/cgi-bin/test.rb it really works as supposed.

(Apache2 on Ubuntu 9.10.)

Any idea?

Couple of items to check:

  • is the file executable?
  • have you output the right Content-type?
  • it is possible to blank newline involving the headers as well as your output?
  • have you restart Apache after setting the configuration?

Should you did everything, it will work fine. I've this as my test.rb file:

#!/usr/bin/env ruby

puts <<EOS
Content-type: text/html

<html><body>hi</body></html>
EOS