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
