Instalando Mod_Ruby

by Gastón Ramos

Bueno dada la escasa y fea documentación que mod_ruby tiene me decidí a escribir un pequeño tutorial de instalación del mismo en debian, que paso a detallar:

Primero instalamos el modulo de apache para ruby (mod_ruby)

apt-get install libapache2-mod-ruby

Luego debemos crear el siguiente archivo:
vi /etc/apache2/mods-available/ruby.conf

y ponemos lo siguiente:

<IfModule mod_ruby.c>
  RubyRequire apache/ruby-run

  <Files *.rbx>
  SetHandler ruby-object
  RubyHandler Apache::RubyRun.instance
  </Files>
</IfModule>

Entre otras cosas le decimos que debe tratar los archivos .rbx como
archivos de ruby.

Luego de esto ya tenemos los dos archivos necesarios para habilitar el módulo en apache:

ruby.load (que secopia al instalar el módulo) y ruby.conf generado por nosotros. Ahora cómo mod_ruby ejecuta los scrips de ruby como CGI necesitamos poner la directiva Options +ExecCGI en el folder dónde vamos a poner nuestros scripts, en mi caso particular necesito que todos los usuarios del sistema puedan ejecutar sus scripts desde su ~/public_html entonces para lograr esto tenemos que editar la configuración del módulo user_dir, editamos el archivo

vi /etc/apache2/mods-available/userdir.conf
y agregamos lo siguiente:
 <IfModule mod_userdir.c>
        UserDir public_html
        UserDir disabled root

        <Directory /home/*/public_html>
                AllowOverride FileInfo AuthConfig Limit Indexes
                Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
                # Para poder ejecutar scripts en ruby agregamos la linea de abajo
                Options +ExecCGI
                <Limit GET POST OPTIONS>
                        Order allow,deny
                        Allow from all
                </Limit>
                <LimitExcept GET POST OPTIONS>
                        Order deny,allow
                        Deny from all
                </LimitExcept>
        </Directory>
</IfModule>

No sé si esto muy seguro o tiene alguna consecuencia no deseada, si es así comenten!
Bueno ahora sólo necesitamos habilitar el móludo para esto ejecutamos el siguiente comando:

a2enmod ruby

y hacemos un reload del apache

/etc/init.d apache2 reload

despues de esto para probarlo ponemos un archivo en nuestro home

vi /home/gaston/test-ruby.rb

con un simple:

puts "hello world"

vamos al navegador a la siguiente url:

http://aca-va-la-url-de-tuserver/~gaston/test-ruby.rb

y vamos a ver un hermoso “hello world” si todo salió bien.

Bueno, con mod_ruby solo para escribir una página web dinámica vamos a tener que hacer algo cómo esto:

puts “<h1>Mi Título</h1>”

lo cual es muy molesto, para hacer las cosas un póco más lindas y más fácil debemos usar eruby que nos permite ejecutar código ruby dentro de archivos de text (como por ejémplo un arhivo html)

Entonces comencemos por instalar eruby:

apt-get install eruby

y luego tenemos que modificar nuevamente el archivo /etc/apache2/mods-available/ruby.conf de esta manera:

<IfModule mod_ruby.c>
  RubyRequire apache/ruby-run
  RubyRequire apache/eruby-run

  <Files *.rbx>
  SetHandler ruby-object
  RubyHandler Apache::RubyRun.instance
  </Files>

 <Files *.rhtml>
  SetHandler ruby-object
  RubyHandler Apache::ERubyRun.instance
 </Files>

</IfModule>

Y luego debemos agregar la siguiente directiva al archivo de configuración de apache /etc/apache2/apache2.conf

AddType text/html .rhtml

Con esto recargamos el apache y ya podemos escribir nuestros .rhtml
y poner código ruby entre los tags <%= %>

Links útiles:

http://en.wikipedia.org/wiki/ERuby
http://wiki.modruby.net/ja/?InstallGuide
http://modruby.net/
http://ubuntuforums.org/archive/index.php/t-356350.html
http://www.ruby-doc.org/docs/ProgrammingRuby/html/web.html