Running Ruby Programs on the Mac OS X Apache Web Server

The Mac OS X operating system includes a pre-configured Apache web server and also includes the libraries needed to run Ruby. Thus, Ruby programs can be run without any configuration changes to the Apache configuration as long as the scripts are placed in the correct location and given the correct file permissions.

This guide assumes you are using OS X Leopard, although the steps should be the same or similar for earlier versions of OS X.

The default location to place CGI programs for the OS X apache installation is in the following directory:

/Library/WebServer/CGI-Executables

Files placed in this directory can be accessed via the following URL:

http://localhost/cgi-bin/file-name

In order for Apache to be able to execute the CGI script, the permissions on the file must be set correctly. For example, open EditRocket and create a file called test.rb with the following contents. Save this file to the /Library/WebServer/CGI-Executables directory.

#!/usr/bin/ruby
puts "Content-type: text/html"
puts ""
puts "<html>"
puts "<body>"
puts "Test Ruby Page."
puts "</body>"
puts "</html>"

Open a terminal window (Applications -> Utilities -> Terminal). Execute the following command:

cd /Library/WebServer/CGI-Executables

Then execute the following (if prompted, enter your password)

sudo chmod 755 test.rb

You now have a Ruby program, test.rb, saved with the correct permissions in the /Library/WebServer/CGI-Executables directory.

Now, we need to restart the web server to make sure the changes take effect. To restart, do the following:

1. Go to System Preferences -> Sharing View

2. Uncheck the Web Sharing box. Then check the Web Sharing box again. This will start and stop the apache web server.

You can test this page by entering the following in your web browser:

http://localhost/cgi-bin/test.rb