eRuby: Guía de Configuración de Ruby para Apache

9 08 2007

Aparte del método de instalación, descrito en el artículo Ruby on Rails: Configuración y Primeros Pasos, he investigado más a profundidad otros métodos. Me ha sorprendido que existe bastantes formas para lograr el soporte de Ruby sobre Apache. En lo particular, yo recomendaría este método al anterior descrito. No pretendo quitarle mérito a mi anterior artículo, solamente me refiero a que este era el que realmente estaba buscando y sobre todo, me permite combinar más tecnologías soportadas dentro del Servidor. En un artículo posterior, describiré más a detalle el por que desear tener más de un lenguaje de scripting disponible dentro del servidor. Bueno, despues de esta introducción, iniciemos con este tutorial.

Para iniciar con este manual, baldrá tener instalado el intérprete de Ruby. Los pasos de configuración están descritos en el artículo Ruby on Rails: Bienvenido a Bordo. En sintésis, debemos instalar Ruby y Ruby on Rails (si queremos trabajar con este framework).

Leyendo el manual incluido dentro de la distribución de Ruby para Windows, me tope con la noticia de que existe otra tecnología para configurar Ruby dentro de Apache. Dicho proyecto se llama eRuby y existe para muchos sistemas, incluyendo Windows. Este, es un binario que al igual que el intérprete de PHP, se agrega a la configuración de Apache.

Paso 1. Descargamos el archivo compilado de eRuby 1.0.5, y extraemos el contenido del archivo dentro del directorio de instalación de Ruby. Los directorios que debemos extraer están dentro de usr/local.

Paso 2. Abrimos nuestro archivo de configuración de Apache (httpd.conf) y agregamos las siguientes líneas:

# Revisar que la directiva AllowOverride este en All
# (solo para un servidor de pruebas)

<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>

AddType application/x-httpd-eruby .rhtml
AddType application/x-httpd-cgi .rhtml

# Indicamos la ruta de acceso de eRuby
Action application/x-httpd-eruby "C:/apache/ruby/bin/eruby.exe"

Paso 3. Definimos un archivo de configuración .htaccess para nuestro servidor, o a un directorio en específico y agregamos las siguientes directivas. Posteriormente, creamos un archivo de registro (ej. eruby.reg). Este archivo nos permitirá registrar el binario eruby.exe para que no sea necesario definirlo en cada archivo que creemos (una ventaja muy importante en materio de portabilidad). Para poder configurar más de un tipo de extensión para los archivos eRuby, debemos indicarlo para el archivo de registro en el segundo directorio ([HKEY_CLASSES_ROOT]\.extension\Shell\ExecCGI\Command).

# Dentro del .htaccess

Options +ExecCGI
ScriptInterpreterSource registry

# El archivo (.reg)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.rhtml\Shell\ExecCGI\Command]
@="C:\\apache\\ruby\\bin\\eruby.exe"

Paso 4. Reiniciemos nuestro servidor, creemos un nuevo archivo .rhtml y ejecutemoslo desde nuestro navegador.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
<html xmlns = "http://www.w3.org/1999/xhtml"&gt;
    <head>
        <title>Environment Variables</title>
    </head>
    <body>

        <h1>Environment Variables</h1>

        <table>
            <% ENV.keys.sort.each do |key| %>
                <tr>
                    <td style = "font-weight:bold;"><%= key %></td>
                    <td><%= ENV[key] %></td>
                </tr>
            <% end %>
        </table>

    </body>
</html>

Deberemos de ver la página con la lista de variables de entorno. Esta lista es muy parecida a la generada por PHP.

Paso 5. . Ahora, procederemos a configurar la conexión a MySQL. Realmente, no se que SGBD, es la preferida para trabajar con Ruby, pero por el momento con configurar MySQL para Ruby, bastará. Para instalar MySQL procedemos a descargarnos el paquete con el módulo desde el stio de VandomBurg.net; el autor del artículo del que me base para describir este paso. Una vez abajo, extraemos el archivo mysql.so y lo copiamos a la carpeta:

%RUBYARCHDIR%\lib\ruby\site_ruby\1.8\i386-msvcrt\mysql.so

Para terminar, copiamos la libreria DLL de MySQL (libmySQL.dll), de la carpeta bin del directorio de instalación de MySQL al directorio bin de Ruby (en mi caso: c:\apache\ruby\bin). Y con esto hemos terminado la instalación del soporte para MySQL dentro de Ruby.

<%
require 'mysql'
puts Mysql::VERSION
%>

Para corroborar que todo está funcionando correctamente, podemos crear otro archivo, y pegamos el anterior código. Si todo está funcionando correctamente, la salida debera ser: 20703 ú otro número en su defecto.

Artículos Relacionados


Acciones

Information

7 responses

11 03 2008
Mario

Excelente guia para iniciar en ruby o rails, pero hay algo que no me queda claro, el paso numero 3, mis dudas concretas son:

Paso 3. Definimos un archivo de configuración .htaccess para nuestro servidor, o a un directorio en específico

CUANDO DICES PARA NUESTRO SERVIDOR TE REFIERES A EL DIRECTORIO DONDE SE ENCUENTRA INSTALADO RUBY O EL DIRECTORIO DE UNA APLICACÍON ESPECIFICA, PODRIAS PONER UNA RUTA DE EJEMPLO, ESO SERVIR MUCHO

y agregamos las siguientes directivas.

Posteriormente, creamos un archivo de registro (ej. eruby.reg). Este archivo nos permitirá registrar el binario eruby.exe para que no sea necesario definirlo en cada archivo que creemos (una ventaja muy importante en materio de portabilidad). Para poder configurar más de un tipo de extensión para los archivos eRuby, debemos indicarlo para el archivo de registro en el segundo directorio ([HKEY_CLASSES_ROOT]\.extension\Shell\ExecCGI\Command) CUANDO ME VOY A REGEDIT DE WINDOWS ESTA RUTA NO EXISTE, MI DUDA ES SI TENGO QUE CREAR ESTA RUTA O YA DEBERIA DE EXISTIR, O BIEN DONDE TENGO QUE PONER EL ARCHIVO eruby.reg, CUAL ES LA RUTA DEL DIRECTORIO DONDE DEBE SER GUARDADO.

Como dje antes esta guia es muy util, solo me gutaria terminar de configurar ruby resolviendo las dudas antes expuestas

Muchas gracias!!!

11 03 2008
Juan Manuel Lemus

Que tal Mario. Adjunto las respuestas a tus preguntas:

1. La carpeta del servidor es el DocumentRoot. Puedes colocar ahí el archivo .htaccess o en cualquier otro diretorio (de preferencia en otro directorio)
Podria ser en este caso: c:/apache/htdocs/eruby/.htaccess.

2. No importa que no exista la ruta de registro en el REGEDIT de Windows. El archivo .REG crea la ruta y registra el archivo eruby.exe. El contenido de este archivo debe ser:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.rhtml\Shell\ExecCGI\Command]
@=»C:\\apache\\ruby\\bin\\eruby.exe»

Saludos, espero haber resuelto tus dudas y te espero en el nuevo sitio del blog: http://www.dotpress.net.

25 04 2008
samuel

No me jodas, valdrá con b, manda huevos: «baldrá tener instalado el intérprete de Ruby»

Qué dolor de ojos

5 05 2008
Tictactic

No me jodas Samuel. Los nombres propios van con mayúsculas. Y al final de cada frase se pone un punto.

Qué dolor de ojos.

28 05 2008
Ronald_ve

En caso de tener instalado un servidor web con xampp, este metodo me resulta bueno para poder empezar a trabajar con Ruby on Rails?? Disculpa la pregunta si es un poco tonta. Pero quiero empezar a trabajar con este framework

28 05 2008
Juan Manuel Lemus

@Ronald_de:

Si tienes instalado XAMPP, este debería traer por defecto el Ruby on Rails y no es necesario instalar eRuby para este efecto. Otra buena recomendación es que utilces el servidor web incluido en la distribución de Ruby. En este otro artículo: https://dotpress.wordpress.com/2007/07/10/ruby-on-rails-bienvenido-a-bordo/, está la explicación de como iniciarse con Ruby on Rails. Suerte con Ruby on Rails….

15 12 2009
gorkimaximum

Hola a todos

A pesar de que en tu comentario, incluyes la opcion «options +EXECGI» en un archivo .htaccess. He comprobado que incluyendo directamente esta opción en la directiva del archivo httpd.conf, se puede ejecutar el archivo de prueba de eruby, y se accede a las variables del sistema de forma correcta.

Es por ello, que me gustaría saber si es realmente necesario crear un archivo .htaccess, ya que al tener tambien PHP y otras opciones como Perl para ejecutar archivos CGI, preferiría controlar todo a través de Apache con el httpd.conf, que es más sencillo.

Saludos

Replica a gorkimaximum Cancelar la respuesta