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=3000Obteniendo lo que puede apreciarse en la imagen adjunta:

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 ...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: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 ...
#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
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]


