Ruby on Rails en Mac OS X

25.ene 2006 Envía un trackback

Esta tarde hablando con Victor me ha picado la curiosidad del Ruby on Rails, viendo varias aplicaciones y algo de código he decidido probarlo bajo Mac OS X.

Lo primero que vamos a hacer es bajar el binario correspondiente (creado por Tony Arnold), lo podemos encontrar aquí. Una vez bajado, descomprimido e instalado lo siguiente será actualizar las gemas, puesto que el paquete puede resultar obsoleto:

riBookG4:~ root# gem update
Upgrading installed gems...
Updating Gem source index for: http://gems.rubyforge.org
Attempting remote upgrade of rake
Attempting remote installation of 'rake'
Successfully installed rake-0.7.0
Installing RDoc documentation for rake-0.7.0...
Attempting remote upgrade of shorturl
Attempting remote installation of 'shorturl'
Successfully installed shorturl-0.8.2
Installing RDoc documentation for shorturl-0.8.2...
Gems: [rake, shorturl] updated
riBookG4:~ root# 
Ahora hagamos nuestra primera prueba con RoR, para ello en el directorio de nuestro usuario creamos una prueba:
riBookG4:~ r0sk$ mkdir RoR
riBookG4:~ r0sk$ cd RoR
riBookG4:~/RoR r0sk$ rails Prueba
      create  
      create  app/controllers

      create  app/helpers
      create  app/models
      create  app/views/layouts
      create  config/environments
      create  components
      create  db
      create  doc
      create  lib
      create  lib/tasks
      create  log
      create  public/images
      create  public/javascripts
      create  public/stylesheets
      create  script/performance
      create  script/process
      create  test/fixtures
      create  test/functional
      create  test/mocks/development
      create  test/mocks/test
      create  test/unit
      create  vendor
      create  vendor/plugins
      create  Rakefile
      create  README
      create  app/controllers/application.rb
      create  app/helpers/application_helper.rb
      create  test/test_helper.rb
      create  config/database.yml
      create  config/routes.rb
      create  public/.htaccess
      create  config/boot.rb
      create  config/environment.rb
      create  config/environments/production.rb
      create  config/environments/development.rb
      create  config/environments/test.rb
      create  script/about
      create  script/breakpointer
      create  script/console
      create  script/destroy
      create  script/generate
      create  script/performance/benchmarker
      create  script/performance/profiler
      create  script/process/reaper
      create  script/process/spawner
      create  script/process/spinner
      create  script/runner
      create  script/server
      create  script/plugin
      create  public/dispatch.rb
      create  public/dispatch.cgi
      create  public/dispatch.fcgi
      create  public/404.html
      create  public/500.html
      create  public/index.html
      create  public/favicon.ico
      create  public/robots.txt
      create  public/images/rails.png
      create  public/javascripts/prototype.js
      create  public/javascripts/effects.js
      create  public/javascripts/dragdrop.js
      create  public/javascripts/controls.js
      create  doc/README_FOR_APP
      create  log/server.log
      create  log/production.log
      create  log/development.log
      create  log/test.log
riBookG4:~/RoR r0sk$ cd Prueba
riBookG4:~/RoR/Prueba r0sk$ ls
README          app             config          doc             log             script          vendor
Rakefile        components      db              lib             public          test
riBookG4:~/RoR/Prueba r0sk$ 
A simple vista parecen demasiados archivos para una pequeña prueba, pero si están ahí será por algo. Llegados a este punto tenemos dos opciones, una de ellas es levantar el servidor incorporado en Ruby on Rails (RoR a partir de ahora), este servidor llamado WEBRick no parece tener muy buena reputación entre la comunidad. La otra opción es configurar Apache para que sea capaz de entender nuestras aplicaciones RoR.

Si optas por el primer punto es sencillo:
riBookG4:~/RoR/Prueba r0sk$ ./script/server 
=> Booting WEBrick...
=> Rails application started on http://0.0.0.0:3000
=> Ctrl-C to shutdown server; call with --help for options
[2006-01-27 01:45:07] INFO  WEBrick 1.3.1
[2006-01-27 01:45:07] INFO  ruby 1.8.2 (2004-12-25) [powerpc-darwin8.0]
[2006-01-27 01:45:07] INFO  WEBrick::HTTPServer#start: pid=426 port=3000
Obteniendo lo que puede apreciarse en la imagen adjunta:

ror01


Claro está que si cortamos ese script (ctrl+c) el servidor se cae y la aplicación deja de funcionar. La otra opción que teníamos era Apache, más árdua de configurar pero a la vez más entertenida. Como Apache es propiedad del usuario www, tendremos que dar los pertinentes permisos a este usuario para que todo funcione correctamente:
riBookG4:~/RoR/Prueba r0sk$ su
Password:
riBookG4:/Users/r0sk/RoR/Prueba root# cd ..
riBookG4:/Users/r0sk/RoR root# chgrp -R www Prueba/
riBookG4:/Users/r0sk/RoR root# cd Prueba/
riBookG4:/Users/r0sk/RoR/Prueba root# chmod 755 db/
riBookG4:/Users/r0sk/RoR/Prueba root# chmod 777 log/
riBookG4:/Users/r0sk/RoR/Prueba root# chmod 775 public/
riBookG4:/Users/r0sk/RoR/Prueba root# chmod 666 log/*.log
riBookG4:/Users/r0sk/RoR/Prueba root# 
Ahora, de golpe y porrazo nos metemos con la configuración de Apache, módulos necesarios, redirecciones y accesos. Comenzamos habilitando en /etc/httpd/httpd.conf el módulo mod_fastcgi y configuramos los aliases al directorio de uso de la aplicación, con todas sus propiedades:
...
LoadModule fastcgi_module     libexec/httpd/mod_fastcgi.so
...
AddModule mod_fastcgi.c
...

        FastCgiIpcDir   /tmp/fcgi_ipc/
        AddHandler      fastcgi-script .fcgi

...

        # RoR test programs
        Alias /test/ "/Users/r0sk/RoR/Prueba/public/"
        Alias /test  "/Users/r0sk/RoR/Prueba/public/"
        
                Options ExecCGI FollowSymLinks
                AllowOverride All
                Order allow,deny
                Allow from all
        
...
Una vez hecho esto, toca meterse en el .htaccess ya dentro de nuestra estructura de prueba, allí vamos a hacer un par de modificaciones para que todo sea funcional:
#RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
...
RewriteEngine On
RewriteBase /test/ 
La primera linea la dejamos como la segunda (podemos copiar y comentar como he hecho yo o simplemente añadir una f en el sitio adecuado). Después activamos mod_rewrite para nuestro ejemplo. El último paso no tiene mucha descripción:
riBookG4:/Users/r0sk/RoR/Prueba/public root# apachectl start
Processing config directory: /private/etc/httpd/users/*.conf
 Processing config file: /private/etc/httpd/users/r0sk.conf
/usr/sbin/apachectl start: httpd started
riBookG4:/Users/r0sk/RoR/Prueba/public root# 
Ahora accedemos a la dirección http://localhost/test/ y si todo ha ido bien veremos la misma pantalla que cuando hemos probado a arrancar WEBrick... Hasta aquí puedo leer, es tarde, mañana le pegaremos otro repaso a esto del Ruby on Rails, buenas noches.

Escribe tu comentario
 
 
Guardar datos
Escribe tu comentario:
captcha


Intenta que tu comentario sea interesante y con información relevante al tema de la entrada. BBCodes disponibles: [url=http://direccion]texto[/url], negrita: [b]texto[/b], itálica: [i]texto[/i], subrayada: [u]texto[/u]. Para mencionar o citar a alguien (quote): [cita]texto[/cita]